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()
,就在最后一个 );
.
之前
所以我希望根据对象中的字段对对象数组列表进行排序,但出现错误 "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()
,就在最后一个 );
.