gpt4 book ai didi

Java:compareTo 排序不正确

转载 作者:行者123 更新时间:2023-12-02 06:08:22 27 4
gpt4 key购买 nike

我有这个compareTo我的列表的代码:

public int compareTo(className a) 
{
return (this.long1 > a.long1) ? 1 : -1;
}

当我使用Collections.sort(list)时,我收到以下错误:Comparison method violates its general contract!

当我将其更改为 if (this.long1 >= a.long2) 时,它可以工作,但无法正确排序。长整数按顺序排序,然后无序排序,然后按顺序排序。使用>= ,输出如下所示:

...
2000100
2000101
2000102
1000100
1000101
2000101
2000102
...

现在,确实会发生重复,并且需要对它们进行正确排序。重复项出现在第一个还是最后一个并不重要,只要它们按顺序正确分组即可,如下所示:

...
2000100
2000101
2000101
2000102
2000102
1000100
1000101
...

我该如何正确地做到这一点?谢谢。

更新

该列表仍在按以下所有建议的顺序进行排序。这是因为它是 List<Class> list = new ArrayList<Class>(); ?我无法使用我在 C# 中习惯的内容:List<Class> list = new List<Class>()

最佳答案

当两个数字相等时,您应该返回 0,或者只使用 Long.compare :

public int compareTo(className a) 
{
return Long.compare(this.long1,a.long1);
}

关于Java:compareTo 排序不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33367191/

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