Σε αυτό το πρόγραμμα, θα μάθετε να ταξινομήσετε μια λίστα πίνακα προσαρμοσμένου αντικειμένου από τη δεδομένη ιδιότητά τους στην 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()); ) ) )
Παραγωγή
AA BXZ
Στο παραπάνω πρόγραμμα, ορίσαμε μια CustomObject
κλάση με μια String
ιδιότητα, customProperty.
Προσθέσαμε επίσης έναν κατασκευαστή που αρχικοποιεί την ιδιότητα και μια συνάρτηση getter getCustomProperty()
που επιστρέφει customProperty.
Στη main()
μέθοδο, δημιουργήσαμε μια λίστα πίνακα προσαρμοσμένων αντικειμένων, αρχικοποιημένη με 5 αντικείμενα.
Για την ταξινόμηση της λίστας με τη δεδομένη ιδιότητα, χρησιμοποιούμε τη sort()
μέθοδο της λίστας . Η sort()
μέθοδος παίρνει τη λίστα προς ταξινόμηση (η τελική ταξινομημένη λίστα είναι επίσης η ίδια) και a comparator
.
Στην περίπτωσή μας, το συγκριτικό είναι ένα λάμδα το οποίο
- παίρνει δύο αντικείμενα από τη λίστα o1 και o2,
- συγκρίνει τη
compareTo()
μέθοδο customProperty των δύο αντικειμένων χρησιμοποιώντας τη μέθοδο, - και τελικά επιστρέφει θετικό αριθμό εάν η ιδιότητα o1 είναι μεγαλύτερη από o2, αρνητική εάν η ιδιότητα o1 είναι μικρότερη από o2, και μηδέν εάν είναι ίσες.
Με βάση αυτό, η λίστα ταξινομείται με βάση την ελάχιστη ιδιότητα έως τη μεγαλύτερη και αποθηκεύεται στη λίστα.