3 回答

TA貢獻1898條經驗 獲得超8個贊
您可以使用Collections.sort自定義Comparator<HockeyPlayer>。
class HockeyPlayer {
public final int goalsScored;
// ...
};
List<HockeyPlayer> players = // ...
Collections.sort(players, new Comparator<HockeyPlayer>() {
@Override public int compare(HockeyPlayer p1, HockeyPlayer p2) {
return p1.goalsScored - p2.goalsScored; // Ascending
}
});
比較部分也可以這樣寫:
players.sort(Comparator.comparingInt(HockeyPLayer::goalsScored));
或者,您可以制作HockeyPlayer implementsComparable<HockeyPlayer>。這定義了所有HockeyPlayer對象的自然順序。使用a Comparator更靈活,因為不同的實現可以按名稱,年齡等進行排序。
也可以看看
Java:實現Comparable和之間有什么區別Comparator?
為了完整起見,我應該提醒您注意,return o1.f - o2.f由于可能存在溢出,必須非常謹慎地使用“按減法比較”快捷方式(請閱讀:有效的Java 2nd Edition:項目12:考慮實現Comparable)。大概曲棍球不是一項運動,運動員可以得分而導致進球=)

TA貢獻1876條經驗 獲得超6個贊
Java 8只需一行:
Collections.sort(players, (p1, p2) -> p1.getGoalsScored() - p2.getGoalsScored());
添加回答
舉報