gpt4 book ai didi

java - 为什么我的比较方法违反了它的一般契约?

转载 作者:行者123 更新时间:2023-11-29 04:22:56 24 4
gpt4 key购买 nike

<分区>

Exception in thread "main" java.lang.IllegalArgumentException: 
Comparison method violates its general contract!
at java.util.ComparableTimSort.mergeLo(ComparableTimSort.java:744)
at java.util.ComparableTimSort.mergeAt(ComparableTimSort.java:481)
at java.util.ComparableTimSort.mergeCollapse(ComparableTimSort.java:406)
at java.util.ComparableTimSort.sort(ComparableTimSort.java:213)
at java.util.Arrays.sort(Arrays.java:1246)
at Solution.main(Solution.java:16)

这是我在运行程序时遇到的异常。当我在 Element 类的对象数组上使用 Arrays.sort 函数时发生错误,描述为

static class Element implements Comparable<Element> {
int pos,val;
Element(int pos,int val){
this.pos=pos;
this.val=val;
}
public int compareTo(Element a){
if(val!=a.val)
return val-a.val;
return pos-a.pos;
}
}

它在某些情况下运行得很好,但在其他情况下会抛出上述错误。我的程序有什么错误?为什么我的比较方法违反了它的一般契约?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com