Programma Java per ordinare una mappa in base ai valori

In questo programma imparerai a ordinare una data mappa in base ai valori in Java.

Per comprendere questo esempio, è necessario conoscere i seguenti argomenti di programmazione Java:

  • Interfaccia Java Map
  • Java LinkedHashMap

Esempio: ordina una mappa per valori

 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; ) ) 

Produzione

 Chiave: Australia Valore: Canberra Chiave: Nepal Valore: Kathmandu Chiave: Inghilterra Valore: Londra Chiave: India Valore: Nuova Delhi Chiave: Stati Uniti Valore: Washington

Nel programma sopra, abbiamo creato una LinkedHashMapmaiuscola con nome. La mappa memorizza i paesi e le rispettive capitali.

Qui abbiamo creato un sortMap()metodo che prende la mappa e restituisce la mappa ordinata.

All'interno del metodo, abbiamo prima creato un elenco denominato capitalList dalle capitali della mappa. Quindi usiamo il sort()metodo di Collectionsper ordinare gli elementi della lista.

Il sort()metodo accetta due parametri: elenco da ordinare e un comparatore . Nel nostro caso, il comparatore è un'espressione lambda.

 (l1, l2) -> l1.getValue().compareTo(l2.getValue())

Qui, l'espressione lambda accetta due elementi adiacenti (l1 e l2) dell'elenco. Quindi ha utilizzato il getValue()metodo per ottenere il valore e il compareTo()metodo per confrontare due valori.

Dopo l'operazione, otteniamo l'elenco ordinato capitalList. Quindi, convertiamo semplicemente l'elenco in LinkedHashMaprisultato con nome e lo restituiamo.

Tornando al main()metodo, scorriamo ogni elemento nella mappa e ne stampiamo la chiave e il valore.

Articoli interessanti...