因此,我希望根据对象中的字段对对象的数组列表进行排序,但收到错误“无法解析方法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/