-1

3 つの値を含むオブジェクトを含む ArrayList があります。これらの値で並べ替えたいと思います。

List<AvailablePeriod> periodList = new ArrayList<AvailablePeriod>

また、AvailablePeriod オブジェクトには以下が含まれます。

DateTime start
DateTime end
int id

リスト内のオブジェクトを最初に開始順、最後に ID 順で並べ替えたいと思います。

並べ替えが思いつかない..

4

2 に答える 2

0

クラスxyzはComparable{を実装します
    DateTime start;
    DateTime終了;
    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)を使用します。

于 2013-03-11T11:45:41.403 に答える
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 に答える