java - CompareTo 不允许比较两个对象

标签 java compareto

因此,我希望根据对象中的字段对对象的数组列表进行排序,但收到错误“无法解析方法compareTo(int)”

            ArrayList<SuperHero> herolistClone = (ArrayList<SuperHero>) superheroList.clone();
            Collections.sort(herolistClone, new Comparator<SuperHero>() {
                @Override
                public int compare(SuperHero superHero, SuperHero superHeroTwo) {
                    return   superHero.getCiviliansSaved().compareTo(superHeroTwo.getCiviliansSaved());
                }
            });
        }

最佳答案

我假设getCiviliansSaved()返回一个int?整数不是对象,因此不能取消引用(不能对它们应用“点”运算符)。

尝试Integer.compare(superHero.getCiviliansSaved(), superHeroTwo.getCiviliansSaved());

或者,将其全部替换为现代的、 Shiny 的新 java:

heroListClone.sort(Comparator.comparingInt(SuperHero::getCiviliansSaved));

boom,更具可读性,并将 5 行复杂的行变成了一行。

我预测您想要反转排序(列出保存最多的英雄,位于列表中的第 0 个位置),在这种情况下,只需在那里的结尾,就在最后一个 ); 之前。

关于java - CompareTo 不允许比较两个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62205068/

相关文章:

java - 如何修复 "cannot find symbol"错误?

java - 重写compareTo时使用compareTo方法?

Java 比较方法。 Student.compareTo 方法应该返回

java - java中String比较的传递性

sorting - 在自引用对象上覆盖compareTo(父/子关系)

java - 如何在java中找到用户接受的字符串数组的索引?

java - 以对象列表为键的 HashMap

java - 尽管以表单形式发送 CSRF token ,但不支持 Spring Security CSRF 405 方法 POST

java - java线程死锁

java - 如何对对象的 ArrayList 进行排序?