Сортировка объекта ArrayList по значению атрибута в Java

У меня есть ArrayList zombie, который заполнен объектом под названием Zombie. Zombie имеет атрибуты health, x, y. Как бы отсортировать массив в порядке возрастания, используя атрибут x of Zombie, для которого первоначально установлены случайные значения?

Я уже нашел возможное решение моей проблемы, но я не понимаю синтаксис ответа. Объяснение этого ответа также может помочь.

Ответ 1

Вы хотите использовать Collections.sort в сочетании с пользовательским Comparator.

Collections.sort(list, new Comparator<Zombie>() {
    @Override
    public int compare(Zombie z1, Zombie z2) {
        if (z1.x() > z2.x())
            return 1;
        if (z1.x() < z2.x())
            return -1;
        return 0;
    }
});

По сути, Comparator - это ключ, который означает, как список должен быть упорядочен с помощью метода compare. При использовании вышеприведенного Comparator мы считаем, что z1 больше z2 если z1 имеет более высокое значение x (и мы показываем это, возвращая 1). Исходя из этого, мы сортируем list.

Ответ 2

используя JAVA 8, выполните следующие действия:

zombie.sort((Zombie z1, Zombie z2) -> {
   if (z1.x() > z2.x())
     return 1;
   if (z1.x() < z2.x())
     return -1;
   return 0;
});

Интерфейс списка теперь поддерживает метод сортировки напрямую