按对象排序ArrayList包含三个值

时间:2013-03-11 11:21:08

标签: java list sorting arraylist

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

List<AvailablePeriod> periodList = new ArrayList<AvailablePeriod>

AvailablePeriod对象包含:

DateTime start
DateTime end
int id

我想让列表中的对象先按开头排序,然后按结束排序,最后按标识排序。

无法弄清楚排序..

2 个答案:

答案 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)