Σε αυτό το πρόγραμμα, θα μάθετε να ταξινομείτε έναν δεδομένο χάρτη με τιμές στην Java.
Για να κατανοήσετε αυτό το παράδειγμα, θα πρέπει να γνωρίζετε τις ακόλουθες εφαρμογές προγραμματισμού Java:
- Διεπαφή χάρτη Java
- Java LinkedHashMap
Παράδειγμα: Ταξινόμηση χάρτη βάσει τιμών
import java.util.*; public class Main ( public static void main(String() args) ( // create a map and store elements to it LinkedHashMap capitals = new LinkedHashMap(); capitals.put("Nepal", "Kathmandu"); capitals.put("India", "New Delhi"); capitals.put("United States", "Washington"); capitals.put("England", "London"); capitals.put("Australia", "Canberra"); // call the sortMap() method to sort the map Map result = sortMap(capitals); for (Map.Entry entry : result.entrySet()) ( System.out.print("Key: " + entry.getKey()); System.out.println(" Value: " + entry.getValue()); ) ) public static LinkedHashMap sortMap(LinkedHashMap map) ( List capitalList = new LinkedList(map.entrySet()); // call the sort() method of Collections Collections.sort(capitalList, (l1, l2) -> l1.getValue().compareTo(l2.getValue())); // create a new map LinkedHashMap result = new LinkedHashMap(); // get entry from list to the map for (Map.Entry entry : capitalList) ( result.put(entry.getKey(), entry.getValue()); ) return result; ) )
Παραγωγή
Κλειδί: Αυστραλία Αξία: Κανμπέρα Κλειδί: Νεπάλ Αξία: Κατμαντού Κλειδί: Αγγλία Αξία: Λονδίνο Κλειδί: Ινδία Αξία: Νέο Δελχί Κλειδί: Ηνωμένες Πολιτείες Αξία: Ουάσιγκτον
Στο παραπάνω πρόγραμμα, δημιουργήσαμε μια LinkedHashMap
ονομαστική πρωτεύουσα. Ο χάρτης αποθηκεύει τις χώρες και τις αντίστοιχες πρωτεύουσες τους.
Εδώ, δημιουργήσαμε μια sortMap()
μέθοδο που παίρνει τον χάρτη και επιστρέφει τον ταξινομημένο χάρτη.
Μέσα στη μέθοδο, δημιουργήσαμε για πρώτη φορά μια λίστα με το όνομα CapitalList από τις πρωτεύουσες του χάρτη. Στη συνέχεια, χρησιμοποιούμε τη sort()
μέθοδο για Collections
να ταξινομήσουμε στοιχεία της λίστας.
Η sort()
μέθοδος παίρνει δύο παραμέτρους: λίστα προς ταξινόμηση και συγκριτικό . Στην περίπτωσή μας, ο συγκριτής είναι μια έκφραση λάμδα.
(l1, l2) -> l1.getValue().compareTo(l2.getValue())
Εδώ, η έκφραση λάμδα παίρνει δύο παρακείμενα στοιχεία (l1 και l2) της λίστας. Στη συνέχεια χρησιμοποίησε τη getValue()
μέθοδο για να πάρει την τιμή και τη compareTo()
μέθοδο για να συγκρίνει δύο τιμές.
Μετά τη λειτουργία, λαμβάνουμε την ταξινομημένη λίστα capitalList. Στη συνέχεια, απλώς μετατρέπουμε τη λίστα σε LinkedHashMap
όνομα που ονομάζεται και επιστρέφουμε.
Πίσω στη main()
μέθοδο, περνάμε κάθε στοιχείο του χάρτη και εκτυπώνουμε το κλειδί και την αξία του.