Програма Java за сортиране на ArrayList на потребителски обекти по свойство

В тази програма ще се научите да сортирате списък с персонализирани обекти по даденото им свойство в Java.

За да разберете този пример, трябва да имате познанията по следните теми за програмиране на Java:

  • Java клас и обекти
  • Клас на Java ArrayList

Пример: Сортиране на 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 е по-голямо от о2, отрицателно, ако свойството на o1 е по-малко от o2, и нула, ако са равни.

Въз основа на това списъкът се сортира въз основа на най-малкото свойство до най-голямото и се съхранява обратно към списъка.

Интересни статии...