English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In questo programma, imparerai a ordinare un ArrayList di oggetti personalizzati per una proprietà data in Java.
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<Customobject> 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()); } } }
Eseguiendo il programma, l'output è:
A Aa B X Z
Nel programma sopra, abbiamo definito una classe CustomObject con l'attributo String customProperty
Abbiamo anche aggiunto un costruttore di inizializzazione delle proprietà e una funzione getter getCustomProperty() che restituisce customProperty
Nel metodo main(), creiamo un elenco di array di oggetti personalizzati list e lo inizializziamo con 5 oggetti.
Per ordinare la lista utilizzando l'attributo fornito, utilizziamo il metodo sort() della lista. Il metodo sort() accetta l'elenco da ordinare (l'elenco ordinato finale è anche lo stesso) e un comparatore
Nel nostro esempio, il comparatore è un'espressione lambda
Recupera due oggetti dalla lista o1 e o2
Utilizza il metodo compareTo() per confrontare due oggetti customProperty
Se l'attributo di o1 è maggiore dell'attributo di o2, restituisce infine un numero positivo; se l'attributo di o1 è minore dell'attributo di o2, restituisce infine un numero negativo; se sono uguali, restituisce zero.
In questo contesto, l'elenco (list) viene ordinato per attributo minore a maggiore attributo e memorizzato di nuovo nell'elenco (list)