我试图重现这个异常(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);
}
Run Code Online (Sandbox Code Playgroud)
此外,当我检查JDK代码时,似乎只有当要排序的集合的大小大于32时,Collections.sort方法才会抛出此异常.应在代码块中进行哪些更改,以便Collections.sort抛出此异常.