W tym programie nauczysz się sortować listę tablicową obiektów niestandardowych według ich właściwości w Javie.
Aby zrozumieć ten przykład, należy znać następujące tematy dotyczące programowania w języku Java:
- Klasa i obiekty Java
- Klasa ArrayList języka Java
Przykład: Sortuj ArrayList obiektów niestandardowych według właściwości
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()); ) ) )
Wynik
A Aa BXZ
W powyższym programie zdefiniowaliśmy CustomObject
klasę z String
właściwością customProperty.
Dodaliśmy również konstruktor, który inicjuje właściwość, oraz funkcję pobierającą, getCustomProperty()
która zwraca customProperty.
W main()
metodzie stworzyliśmy tablicę zawierającą listę obiektów niestandardowych, zainicjowaną 5 obiektami.
Do sortowania listy według podanej właściwości używamy sort()
metody list . sort()
Metoda ta lista sortowany (końcowe posortowanej listy jest również taka sama) i comparator
.
W naszym przypadku komparatorem jest lambda, która
- pobiera dwa obiekty z listy o1 i o2,
- porównuje customProperty dwóch obiektów przy użyciu
compareTo()
metody, - i na koniec zwraca liczbę dodatnią, jeśli własność o1 jest większa niż o2, ujemna, jeśli własność o1 jest mniejsza niż o2 i zero, jeśli są równe.
Na tej podstawie lista jest sortowana według właściwości od najmniejszej do największej i zapisywana z powrotem do listy.