gpt4 book ai didi

java - Java 中 Collections.Sort() 的问题

转载 作者:行者123 更新时间:2023-12-01 18:05:50 24 4
gpt4 key购买 nike

我已经用谷歌搜索了这个问题,但似乎每个人都有其他问题。也许有人可以帮助我:

我总是在某个(随机)点收到此错误消息:

Exception in thread "LWJGL Application" java.lang.IllegalArgumentException: Comparison method violates its general contract!
at java.util.ComparableTimSort.mergeLo(ComparableTimSort.java:740)
at java.util.ComparableTimSort.mergeAt(ComparableTimSort.java:477)
at java.util.ComparableTimSort.mergeCollapse(ComparableTimSort.java:402)
at java.util.ComparableTimSort.sort(ComparableTimSort.java:209)
at java.util.Arrays.sort(Arrays.java:1312)
at java.util.Arrays.sort(Arrays.java:1506)
at java.util.ArrayList.sort(ArrayList.java:1454)
at java.util.Collections.sort(Collections.java:141)
at com.mygdx.game.GdxGame.render(GdxGame.java:187)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:223)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:124)

这是我的比较方法:

@Override
public int compareTo(Entity entity) {
return (int)(entity.y - y);
}

提前谢谢您!

最佳答案

很可能您会遇到上溢/下溢,从而导致比较结果并不总是按预期进行。即,如果 entity.yy >= 231 之间的差异将会溢出,并具有与其应有的相反的符号。我建议你使用

public int compareTo(Entity entity) {
return Long.compare(entity.y, y);
}

public int compareTo(Entity entity) {
return entity.y > y ? +1 : entity.y < y ? -1 : 0;
}

关于java - Java 中 Collections.Sort() 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36519191/

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