基于两个参数同时收集排序 [英] Collection sorting in basis of two parameters simultaneously

查看:111
本文介绍了基于两个参数同时收集排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个类有两个日期字段说:

  class TestData {
Date activation;
日期timeStamp;
}

我想根据 activation 日期,如果它们相等,则基于 timestamp 即max(激活)和max(timeStamp)。



代码我试过的只有fetch max(激活)

  public class CollectionSort {

public static void main(String [] args){
List< TestData> testList = new ArrayList< TestData>();

Collections.sort(testList,new Comparator< TestData>(){

@Override
public int compare(TestData t1,TestData t2){
int result = 0;
if(t1.getActivation()。before(t2.getActivation())){
result = 1;
}
返回结果;
}
});
System.out.println(First object is+ testList.get(0));
}
}

任何帮助将非常感激。

感谢

解决方案

b

  Collections.sort(yourList,new Comparator< TestData>(){
public int compare(TestData o1,TestData o2){
int date1Diff = o1.getActivation()。compareTo(o2.getActivation());
return date1Diff == 0?
o1.geTimestamp()。compareTo(o2.getTimestamp()):
date1Diff;
}
});


I have a class with two date fields say:

class TestData {
    Date activation;
    Date timeStamp;
}

I want to sort the list of the above class on basis of activation date and if they are equal then on basis of timestamp i.e. max(activation) and max(timeStamp).

Code I tried is as follws which only fetch max(activation)

public class CollectionSort {

    public static void main(String[] args) {
        List<TestData> testList = new ArrayList<TestData>();

        Collections.sort(testList, new Comparator<TestData>() {

            @Override
            public int compare(TestData t1, TestData t2) {
                int result = 0;
                if (t1.getActivation().before(t2.getActivation())) {
                        result = 1;
                }
                return result;
            }
        });
        System.out.println("First object is " + testList.get(0));
    }
}

Any help would be greatly appreciated.

Thanks

解决方案

This would do it.!

        Collections.sort(yourList, new Comparator<TestData>() {    
            public int compare(TestData o1, TestData o2) {
                int date1Diff = o1.getActivation().compareTo(o2.getActivation());
                return date1Diff == 0 ? 
                        o1.geTimestamp().compareTo(o2.getTimestamp()) :
                        date1Diff;
            }               
        });

这篇关于基于两个参数同时收集排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆