Programa Java para ordenar un mapa por valores

En este programa, aprenderá a ordenar un mapa dado por valores en Java.

Para comprender este ejemplo, debe tener el conocimiento de los siguientes temas de programación de Java:

  • Interfaz de mapa Java
  • Java LinkedHashMap

Ejemplo: ordenar un mapa por valores

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

Salida

 Clave: Australia Valor: Canberra Clave: Nepal Valor: Katmandú Clave: Inglaterra Valor: Londres Clave: India Valor: Nueva Delhi Clave: Estados Unidos Valor: Washington

En el programa anterior, hemos creado LinkedHashMapmayúsculas con nombre. El mapa almacena países y sus respectivas capitales.

Aquí, hemos creado un sortMap()método que toma el mapa y devuelve el mapa ordenado.

Dentro del método, primero creamos una lista llamada capitalList a partir de las mayúsculas del mapa. Luego usamos el sort()método de Collectionspara ordenar los elementos de la lista.

El sort()método toma dos parámetros: lista para ordenar y un comparador . En nuestro caso, el comparador es una expresión lambda.

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

Aquí, la expresión lambda toma dos elementos adyacentes (l1 y l2) de la lista. Luego utilizó el getValue()método para obtener el valor y el compareTo()método para comparar dos valores.

Después de la operación, obtenemos la lista ordenada capitalList. Luego, simplemente convertimos la lista a un LinkedHashMapresultado con nombre y lo devolvemos.

De vuelta en el main()método, recorremos cada elemento del mapa e imprimimos su clave y valor.

Articulos interesantes...