一千萬個為什麽

搜索

同時根據兩個參數進行集合排序

我有一個有兩個日期字段的課程說:

class TestData {
    Date activation;
    Date timeStamp;
}

我想基於 activation 日期對上述類的列表進行排序,如果它們相等則基於 timestamp ,即max(激活)和max(timeStamp)。

我試過的代碼就像只能獲取max(激活)的一樣

public class CollectionSort {

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

        Collections.sort(testList, new Comparator() {

            @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() {    
            public int compare(TestData o1, TestData o2) {
                int date1Diff = o1.getActivation().compareTo(o2.getActivation());
                return date1Diff == 0 ? 
                        o1.geTimestamp().compareTo(o2.getTimestamp()) :
                        date1Diff;
            }               
        });

轉載註明原文: 同時根據兩個參數進行集合排序