繁体   English   中英

按升序对数组列表进行排序

[英]sort arraylist in ascending order

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

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 中正确排序数组列表。 在将它们插入最终数组之前,我如何按升序对数组列表中的每个部分(年、月、日、小时)进行排序?

谢谢。

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

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

要对集合进行排序,您可以像这样拨打电话:

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
}

在您的时间/日期对象上实现可比较的接口。 然后就像做 Collections.sort 一样简单

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM