Как отсортировать arraylist объектов свойством?

Позволяет говорят, что Вы имеете Arraylist из HockeyPlayer объекты.

Как Вы могли отсортировать это, если у них всех есть переменный интервал goalsScored. Как Вы могли отсортировать их по goalsScored?

37
задан Arpit Aggarwal 7 September 2016 в 05:48
поделиться

4 ответа

Напишите пользовательский компаратор для выполнения этой работы.

3
ответ дан 27 November 2019 в 04:15
поделиться

Используйте общий компаратор, такой как Bean Comparator .

2
ответ дан 27 November 2019 в 04:15
поделиться

В Java есть набор методов sort () для такого рода вещей. Подробнее см. Collections.sort (и Comparable).

0
ответ дан 27 November 2019 в 04:15
поделиться

Вы можете использовать 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 реализацией Comparable . Это определяет естественный порядок для всех объектов HockeyPlayer . Использование Компаратора более гибкое, поскольку различные реализации могут упорядочиваться по имени, возрасту и т. Д.

См. Также


Для полноты, я должен предупредить, что ярлык return o1.f - o2.f сравнения путем вычитания должен использоваться с особой осторожностью из-за возможных переполнений (прочтите : Эффективная Java 2nd Edition: Пункт 12: Рассмотрите возможность реализации Comparable ). По-видимому, хоккей - это не спорт, в котором игрок может забивать голы в количестве, которое вызовет проблемы =)

См. Также

88
ответ дан 27 November 2019 в 04:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: