作为实习的一部分,我被要求调查一个错误。一段代码正在抛出
java.lang.IllegalArgumentException:比较方法违反了它的一般约定!
自定义通过查看所述自定义类的成员变量Comparator
来比较两个自定义类:long
return v1 > v2 ? -1 : v1 < v2 ? 1 : 0;
此自定义类的equals
方法查看此自定义类的String
成员变量。我们在重现这种行为时遇到了麻烦。我的下意识反应是将自定义中的 return 语句替换为Comparator
,return v2.compareTo(v1);
但我的团队怀疑这是否能解决问题。任何人都可以提供任何见解吗?
Arrays.sort(anArray, new Comparator<ACustomClass>() {
@Override
public int compare(ACustomClass o1, ACustomClass o2) {
long v1 = o1.getALong();
long v2 = o2.getALong();
return v1 > v2 ? -1 : v1 < v2 ? 1 : 0;
}});