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

时间:2020-09-18  来源:安卓教程  阅读:

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;

如当前对象

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

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


public class JsonComparator implements Comparator<NewRecordEntity>{
    
    @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()>0){
                        return -1;
                    }else if(d1.getTime() - d2.getTime()<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()方法。

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

http://m.bbyears.com/shoujikaifa/99533.html

推荐访问:
相关阅读 猜你喜欢
本类排行 本类最新