English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этом примере вы узнаете, как сортировать ArrayList с пользовательскими объектами по заданному свойству в Java.
import java.util.*; public class CustomObject { private String customProperty; public CustomObject(String property) { this.customProperty = property; } public String getCustomProperty() { return this.customProperty; } public static void main(String[] args) { ArrayList<Customobject> list = new ArrayList<>(); list.add(new CustomObject("Z")); list.add(new CustomObject("A")); list.add(new CustomObject("B")); list.add(new CustomObject("X")); list.add(new CustomObject("Aa")); list.sort((o1, o2) -> o1.getCustomProperty().compareTo(o2.getCustomProperty())); for (CustomObject obj : list) { System.out.println(obj.getCustomProperty()); } } }
При выполнении этой программы, вывод будет:
A Aa B X Z
В программе выше мы определили класс CustomObject с свойством String customProperty
Мы также добавили конструктор для инициализации свойств и getter-функцию getCustomProperty(), которая возвращает customProperty
В методе main() мы создаем список массив объектов CustomObject и инициализируем его 5 объектами.
Для сортировки списка по заданному свойству мы используем метод sort() списка. Метод sort() принимает список для сортировки ( 最终 сортированный список также будет таким же ) и компаратор
В нашем примере компаратор - это lambda-выражение
Получение двух объектов из списков o1 и o2
Использование метода compareTo() для сравнения свойств customProperty двух объектов
Если свойство o1 больше свойства o2, возвращает положительное число; если свойство o1 меньше свойства o2, возвращает отрицательное число; если они равны, возвращает ноль.
На этом основании, список (list) сортируется по минимальному свойству к максимальному свойству и хранится обратно в список (list)