java - 同时根据两个参数进行集合排序

标签 java sorting collections

我有一个包含两个日期字段的类:

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/

相关文章:

mongodb - 将本地 mongo 集合部署到 meteor.com 服务器

java - Spring Batch 流程 - 获取未找到的下一个状态

java - 运行已编译的java程序的问题

c# - 对字符串属性进行排序,例如 Integer LINQ

java - 为链表中的数组对象创建 'sort' 方法

performance - 为什么 BUILD-MAX-HEAP 需要时间 O(n) 而 HEAP-SORT 需要 O(nlgn) 时间?

java - 在 Java 中处理排序组

java - 在 Java 集合中缓存哈希?

java - 如何使用 TCP/IP 将消息发送到 java 中的多播地址?

java - Lucene 不同的结果