所以我想根据对象中的字段对对象的数组列表进行排序,但出现错误“无法解析方法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());
}
});
}
答案 0 :(得分:0)
我假设getCiviliansSaved()
返回一个整数? int不是对象,因此无法取消引用('dot'运算符不能应用于它们)。
尝试Integer.compare(superHero.getCiviliansSaved(), superHeroTwo.getCiviliansSaved());
或者,将其全部替换为现代,闪亮的新Java:
heroListClone.sort(Comparator.comparingInt(SuperHero::getCiviliansSaved));
繁荣,更具可读性,将5条复杂的行变成了一行。
我预计您要颠倒排序(在列表中的0位置列出保存最多的英雄),在这种情况下,只需在前面的末尾打一个.reversed()
最后一个);
。