按升序排序arraylist

时间:2010-01-11 22:59:03

标签: java sorting arraylist

我有一个对象的arraylist,每个包含一年/月/日/小时的属性。我最终要做的是创建一个新的多维数组,它通过递增小时包含一组每个对象。例如,我想要的最终数组的一个例子是:

array: [0]
            [0] 01:04:00, 4-10-09
            [1] 01:15:00, 4-10-09
       [1]
            [0] 02:25:00, 4-10-09
       [2]
            [0] 06:14:00, 4-10-09
            [1] 06:27:00, 4-10-09
       [3]   
            [0] 04:03:00, 4-11-09
            [1] 04:11:00, 4-11-09

我很难确定如何在java中正确排序arraylists。在将它们插入最终数组之前,我怎样才能按照升序对arraylist中的每个部分(年,月,日,小时)进行排序?

感谢。

3 个答案:

答案 0 :(得分:2)

查看比较器http://java.sun.com/j2se/1.4.2/docs/api/java/util/Comparator.html

Comparator是比较(Object1,Object2)方法的接口,您可以在其中比较日期 然后定义自己的比较器对象,实现比较器,然后使用Collections.sort(Arraylist,comparator)

答案 1 :(得分:2)

要对某个系列进行排序,您可以进行如下调用:

List<MyDate> dates = ... 
Collections.sort(dates);

MyDate类需要实现Comparable接口,这需要实现“int compareTo(object o)”方法。

在“compareTo”方法中,您可以编写将调用年,月等的getter的代码,直到它确定当前对象是否小于,等于或大于对象“ o“被传递到compareTo方法。

示例:

public int compareTo(Object o) {
    MyDate otherDate = (MyDate) o;
    int thisYear = this.getYear();
    int otherYear = otherDate.getYear();
    if (thisYear < otherYear) return -1;
    if (thisYear > otherYear) return 1;
    // Now try the month, then day etc
}

答案 2 :(得分:0)

在您的时间/日期对象上实施类似的界面。然后它就像做Collections.sort

一样简单