安卓开发之Collections.sort方法对list按时间排序

compare(a,b)方法:根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数。
equals(obj)方法:仅当指定的对象也是一个 Comparator,并且强行实施与此 Comparator 相同的排序时才返回 true。
Collections.sort(list, new PriceComparator());的第二个参数返回一个int型的值,就相当于一个标志,告诉sort方法按什么顺序来对list进行排序。

一直都没有接触排序,突然要实现对List的排序,找了一下资料,发现Collections.sort( )这个方法。

Collections.sort( )分为两部分,一部分为排序规则,一部分为排序算法 。

规则用来判断对象,算法则考虑如何进行排序。

对于自定义对象,sort()不知道规则,所以无法比较,这种情况下一定要定义排序规则。方式有两种:

第一种,java.lang下面的一个接口:Comparable。可以让自定义对象实现一个Comparable接口,这个接口只有一个方法comparableTo(Object o)

其规则是当前对象与o对象进行比较,返回一个int值,系统根据此值进行排序。

如当前对象>o对象,则返回值>0;

如当前对象=o对象,则返回值=0;

如当前对象<o对象,则返回值<0;

第二种方式,java.util下有一个Comparator(比较器)。它拥有compare( )方法,用来比较两个对象。

至此,我采用了第二种方式。下面是定义的排序规则:

public class JsonComparator implements Comparator&lt;NewRecordEntity&gt;{
    
    @Override
    public int compare(NewRecordEntity arg0, NewRecordEntity arg1) {
        
        String data1=TimeStamp2Date(arg0.getOldtime()+"", "yyyy-MM-dd HH:mm:ss");
        String data2=TimeStamp2Date(arg1.getOldtime()+"", "yyyy-MM-dd HH:mm:ss");
        //设定时间的模板
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                //得到指定模范的时间
                try {
                    Date d1 = sdf.parse(data1);
                    Date d2 = sdf.parse(data2);
                    if(d1.getTime() - d2.getTime()&gt;0){
                        return -1;
                    }else if(d1.getTime() - d2.getTime()&lt;0){
                        return 1;
                    }
                    
                    
                } catch (ParseException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                
        
        return 0;
    }
    public String TimeStamp2Date(String timestampString, String formats){  
          Long timestamp = Long.parseLong(timestampString)*1000;  
          String date = new java.text.SimpleDateFormat(formats).format(new java.util.Date(timestamp));  
          return date;  
        }
}

使用:

//排序操作
JsonComparator pComparator =  new JsonComparator();
Collections.sort(list, pComparator);
 

这样就实现了排序功能。如果是对数组进行排序,同样的原理,只不过换成Arrays.sort()方法。

时间: 2024-08-02 15:12:47

安卓开发之Collections.sort方法对list按时间排序的相关文章

安卓开发之Scroller.startScroll()方法简介

上篇说到,可以使用scrollBy和scrollTo移动View,这里产生一个问题,加入一个View在屏幕的左上角即(0,0)位置,他调用 scrollTo(-300,-300)时,会立即跳过去,显得很突兀,如何让他平缓地划过去呢?就可以用本篇的方法了. 使用方法: int startX;//滑动动作的起始点x坐标 int startY;//滑动动作的起始点y坐标 int dx;    //x轴偏移量向左为负,向右为正(即负值向右移,正值向左移) int dy;    //y轴偏移量向左为负,向

new person-简单的Collections.sort 方法。 大伙看下,帮忙补充一下 这个方法好么。。

问题描述 简单的Collections.sort 方法. 大伙看下,帮忙补充一下 这个方法好么.. import java.util.ArrayList; import java.util.Collections; public class StringSorting { public static void main(String[] args) { ArrayList persons = new ArrayList(); persons.add(new Person("Sam"))

Java开发之Spring连接数据库方法实例分析_java

本文实例讲述了Java开发之Spring连接数据库方法.分享给大家供大家参考,具体如下: 接口: package cn.com.service; import java.util.List; import cn.com.bean.PersonBean; public interface PersonService { //保存 public void save(PersonBean person); //更新 public void update(PersonBean person); //获取

用Java集合中的Collections.sort方法如何对list排序(两种方法)_java

第一种是list中的对象实现Comparable接口,如下: /** * 根据order对User排序 */ public class User implements Comparable <user> { private String name; private Integer order; public String getName() { return name; } public void setName(String name) { this.name = name; } publi

JavaScript中用sort()方法对数组元素进行排序的操作

  这篇文章主要介绍了JavaScript中用sort()方法对数组元素进行排序的操作,是JS入门学习中的基础知识,需要的朋友可以参考下 JavaScript数组sort()方法排序数组的元素. 语法 ? 1 array.sort( compareFunction ); 下面是参数的详细信息: compareFunction : 指定一个函数,定义排序次序.如果省略,数组字典顺序排序. 返回值: 返回一个排序的数组 例子: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <

安卓开发之SkBitmap的内存管理

  SkBitmap是skia中很重要的一个类,很多画图动作涉及到SkBitmap,它封装了与位图相关的一系列操作,了解它的内存管理策略有助于我们更好的使用它,了解它的初衷是要想实现对skia中的blitter进行硬件加速. 1. SkBitmap的类结构: 开发之SkBitmap的内存管理-安卓开发内存优化"> 2. SkBitmap的内嵌类Allocator Allocator是SkBitmap的内嵌类,其实只有一个成员函数:allocPixelRef(),所以把它理解为一个接口更合适

JavaScript中用sort()方法对数组元素进行排序的操作_基础知识

 JavaScript数组sort()方法排序数组的元素.语法 array.sort( compareFunction ); 下面是参数的详细信息:     compareFunction : 指定一个函数,定义排序次序.如果省略,数组字典顺序排序. 返回值: 返回一个排序的数组例子: <html> <head> <title>JavaScript Array sort Method</title> </head> <body> &l

安卓开发之Android帧动画的结束事件

最近在一个Android应用中,用到了帧动画.这东西的具体介绍就不讲了,网上到处是(虽然基本都是抄来抄去--).用起来很简单效果也很好,不过这一次我有一个特殊的要求,希望帧动画在播放完毕的时候做一些其他的事情. 在渐变动画中,我们可以很简单的使用监听器: XXX.setAnimationListener(new AnimationListener() {     @Override     public void onAnimationStart(Animation animation) {  

安卓开发之Picasso框架的使用例子

之前一直使用imageloader这个框架加载图片,觉得配置很麻烦,觉得使用Picasso这个框架. 什么是Picasso我就不多说了,大家可以去官网看,http://square.github.io/picasso/. Picasso使用的方法汇总:  代码如下 复制代码 Picasso.with(context).load("yun_qi_img/DvpvklR.jpg").into(imageView); Picasso.with(context).load(url).into(