Programa Java para classificar um mapa por valores

Neste programa, você aprenderá a classificar um determinado mapa por valores em Java.

Para entender este exemplo, você deve ter conhecimento dos seguintes tópicos de programação Java:

  • Interface de mapa Java
  • Java LinkedHashMap

Exemplo: classificar um 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; ) ) 

Resultado

 Chave: Austrália Valor: Canberra Chave: Nepal Valor: Kathmandu Chave: Inglaterra Valor: Londres Chave: Índia Valor: Nova Delhi Chave: Estados Unidos Valor: Washington

No programa acima, criamos LinkedHashMapcapitais nomeados. O mapa armazena os países e suas respectivas capitais.

Aqui, criamos um sortMap()método que pega o mapa e retorna o mapa classificado.

Dentro do método, primeiro criamos uma lista chamada capitalList das capitais do mapa. Em seguida, usamos o sort()método de Collectionspara classificar os elementos da lista.

O sort()método leva dois parâmetros: lista a ser classificada e um comparador . Em nosso caso, o comparador é uma expressão lambda.

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

Aqui, a expressão lambda leva dois elementos adjacentes (l1 e l2) da lista. Em seguida, usou o getValue()método para obter o valor e o compareTo()método para comparar dois valores.

Após a operação, obtemos a lista classificada capitalList. Em seguida, simplesmente convertemos a lista em LinkedHashMapresultado nomeado e o retornamos.

De volta ao main()método, percorremos cada item no mapa e imprimimos sua chave e valor.

Artigos interessantes...