În acest program, veți învăța să sortați un arraylist de obiecte personalizate după proprietatea lor dată în Java.
Pentru a înțelege acest exemplu, ar trebui să aveți cunoștințele despre următoarele subiecte de programare Java:
- Clasa și obiecte Java
- Clasa Java ArrayList
Exemplu: Sortează ArrayList de obiecte personalizate după proprietate
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()); ) ) )
Ieșire
A Aa BXZ
În programul de mai sus, am definit o CustomObject
clasă cu o String
proprietate, customProperty.
Am adăugat, de asemenea, un constructor care inițializează proprietatea și o funcție getter getCustomProperty()
care returnează customProperty.
În main()
metodă, am creat o listă matrice de liste de obiecte personalizate, inițializată cu 5 obiecte.
Pentru sortarea listei cu proprietatea dată, folosim sort()
metoda list . sort()
Metoda ia lista pentru a fi sortate (lista finală sortată este , de asemenea , la fel) și o comparator
.
În cazul nostru, comparatorul este o lambda care
- preia două obiecte din lista o1 și o2,
- compară customProperty celor două obiecte folosind
compareTo()
metoda, - și în cele din urmă returnează un număr pozitiv dacă proprietatea lui o1 este mai mare decât o2, negativ dacă proprietatea lui o1 este mai mică decât o2 și zero dacă sunt egale.
Pe baza acestui fapt, lista este sortată în funcție de cea mai mică proprietate la cea mai mare și stocată înapoi la listă.