-1

我有一个 ArrayList 包含包含三个值的对象,现在我想按这些值对它们进行排序:

List<AvailablePeriod> periodList = new ArrayList<AvailablePeriod>

一个 AvailablePeriod 对象包含:

DateTime start
DateTime end
int id

我想让列表中的对象首先按开始排序,然后按结束和最后按 id 排序。

无法弄清楚排序..

4

2 回答 2

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());
于 2013-03-11T11:26:14.600 回答
0

xyz 类实现 Comparable {
    日期时间开始;
    日期时间结束;
    内部标识;

@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)

于 2013-03-11T11:45:41.403 回答