У цій програмі ви навчитеся сортувати списки користувацьких об’єктів за заданими властивостями в Java.
Щоб зрозуміти цей приклад, ви повинні знати такі теми програмування Java:
- Клас і об'єкти Java
- Клас Java ArrayList
Приклад: Сортування списку масивів користувацьких об’єктів за властивістю
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 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 BXZ
У наведеній вище програмі ми визначили CustomObject
клас із String
властивістю customProperty.
Ми також додали конструктор, який ініціалізує властивість, і функцію отримання, getCustomProperty()
яка повертає customProperty.
У main()
методі ми створили список масивів із списку нестандартних об'єктів, ініціалізований 5 об'єктами.
Для сортування списку з заданою властивістю ми використовуємо sort()
метод list . sort()
Метод приймає список , щоб бути відсортований (остаточний відсортований список є також те ж саме) і comparator
.
У нашому випадку компаратор - це лямбда, яка
- бере два об'єкти зі списку o1 та o2,
- порівнює customProperty двох об'єктів за допомогою
compareTo()
методу, - і, нарешті, повертає додатне число, якщо властивість o1 більше, ніж o2, негативне, якщо властивість o1 менше, ніж o2, і нуль, якщо вони рівні.
Виходячи з цього, список сортується на основі найменшої властивості до найбільшої та зберігається назад до списку.