コードの一部をデバッグする必要があるため、この例外 (java.lang.IllegalArgumentException: 比較メソッドが一般契約に違反しています!) を再現しようとしていますが、以下のコードではスローされません。
try {
ArrayList al = new ArrayList();
for (int i = 1; i <= 36; i++) {
TypeAdapterSort t = new TypeAdapterSort();
t.order = i;
al.add(t);
}
System.out.println(al.size());
Collections.sort(al, new Comparator() {
public int compare(Object o1, Object o2) {
TypeAdapterSort tas1 = (TypeAdapterSort) o1;
TypeAdapterSort tas2 = (TypeAdapterSort) o2;
if (tas1.order < tas2.order)
return -1;
else
return 1;
}
});
} catch (Exception e) {
System.out.println(e);
}
また、JDK コードを確認したところ、この例外は、ソートされるコレクションのサイズが 32 より大きい場合にのみ Collections.sort メソッドによってスローされるようです。Collections.sort がこの例外をスローするように、コード ブロックでどのような変更を行う必要がありますか。