CompareTo不允许比较两个对象

时间:2020-06-04 22:15:20

标签: 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());
                }
            });
        }

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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

我预计您要颠倒排序(在列表中的0位置列出保存最多的英雄),在这种情况下,只需在前面的末尾打一个.reversed()最后一个);

相关问题