CompareTo 不允许比较两个对象

CompareTo not allowing to compare two objects

所以我希望根据对象中的字段对对象数组列表进行排序,但出现错误 "Cannot resolve method 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() returns 是一个整数?整数不是对象,因此不能取消引用('dot' 运算符不能应用于它们)。

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

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

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

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

我预测你想要反转排序(列出保存最多的英雄,在列表的 0 位置),在这种情况下,只需在末尾打一个 .reversed(),就在最后一个 );.

之前