亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何按屬性對對象的數組列表進行排序?

如何按屬性對對象的數組列表進行排序?

UYOU 2019-11-14 14:17:40
比方說你有一個Arraylist的HockeyPlayer對象。如果它們都具有int GoalScored變量,則如何排序?您如何按GoalScored對它們進行排序?
查看完整描述

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)。大概曲棍球不是一項運動,運動員可以得分而導致進球=)


查看完整回答
反對 回復 2019-11-14
?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

Java 8只需一行:


Collections.sort(players, (p1, p2) -> p1.getGoalsScored() - p2.getGoalsScored());


查看完整回答
反對 回復 2019-11-14
  • 3 回答
  • 0 關注
  • 475 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號