我有一个包含三个值的ArrayList包含对象,现在我想按这些值对它们进行排序:
List<AvailablePeriod> periodList = new ArrayList<AvailablePeriod>
AvailablePeriod对象包含:
DateTime start
DateTime end
int id
我想让列表中的对象先按开头排序,然后按结束排序,最后按标识排序。
无法弄清楚排序..
答案 0 :(得分:0)
写一个比较器,如下所示
public class MyComparator implements Comparator<AvailablePeriod> {
@Override
public int compare(AvailablePeriod o1, AvailablePeriod o2) {
int result = o1.getStart().compareTo(o2.getStart());
if (result == 0) {
result = o1.getEnd().compareTo(o2.getEnd());
}
if (result == 0) {
result = Integer.valueOf(o1.getId()).compareTo(o2.getId());
}
return result;
}
}
然后使用Collection.sort方法
List<AvailablePeriod> periodList = new ArrayList<AvailablePeriod>
Collections.sort(periodList , new MyComparator());
答案 1 :(得分:0)
class xyz implements Comparable {
DateTime start;
DateTime end;
int id;
@Override
public int compareTo(xyz o) {
if (this.start.isBefore(o.start)) {
return -1;
} else if (o.start.isBefore(o.start)) {
return -1;
} else {
if (this.end.isBefore(o.end)) {
return -1;
} else if (o.end.isBefore(this.end)) {
return 1;
} else {
if (this.id > o.id) {
return 1;
} else if (this.id < o.id) {
return -1;
} else {
return 0;
}
}
}
}
}
你可以写这样的东西。然后使用collections.sort(list)