In questo programma imparerai a ordinare un elenco di oggetti personalizzati in base alla loro proprietà in Java.
Per comprendere questo esempio, è necessario conoscere i seguenti argomenti di programmazione Java:
- Classe e oggetti Java
- Classe Java ArrayList
Esempio: Ordina elenco array di oggetti personalizzati per proprietà
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()); ) ) )
Produzione
A Aa BXZ
Nel programma precedente, abbiamo definito una CustomObject
classe con una String
proprietà, customProperty.
Abbiamo anche aggiunto un costruttore che inizializza la proprietà e una funzione getter getCustomProperty()
che restituisce customProperty.
Nel main()
metodo, abbiamo creato un elenco di array di elenchi di oggetti personalizzati, inizializzato con 5 oggetti.
Per ordinare la lista con la proprietà data, usiamo il sort()
metodo della lista . Il sort()
metodo accetta l'elenco da ordinare (anche l'elenco finale ordinato è lo stesso) e un file comparator
.
Nel nostro caso, il comparatore è un lambda che
- prende due oggetti dalla lista o1 e o2,
- confronta customProperty dei due oggetti usando il
compareTo()
metodo, - e infine restituisce un numero positivo se la proprietà di o1 è maggiore di quella di o2, negativo se la proprietà di o1 è minore di o2 e zero se sono uguali.
In base a ciò, l'elenco viene ordinato in base alla proprietà dalla minima alla maggiore e memorizzato di nuovo nell'elenco.