一尘不染

如何按属性对对象的数组列表进行排序?

java

比方说你有一个ArraylistHockeyPlayer对象。

如果它们都具有int GoalScored变量,则如何排序?你如何按GoalScored排序?


阅读 667

收藏
2020-03-24

共1个答案

一尘不染

你可以使用Collections.sort自定义Comparator

    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更灵活,因为不同的实现可以按名称,年龄等进行排序。

2020-03-24