我有一个对象的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中的每个部分(年,月,日,小时)进行排序?
感谢。
答案 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
一样简单