我有一个包含两个日期字段的类:
class TestData {
Date activation;
Date timeStamp;
}
我想根据激活日期对上述类的列表进行排序,如果它们相等,则根据时间戳进行排序,即 max(activation) 和 max(时间戳)。
我尝试的代码如下,仅获取 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));
}
}
任何帮助将不胜感激。
谢谢
最佳答案
这样就可以了!
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;
}
});
关于java - 同时根据两个参数进行集合排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5592220/