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 LinkedHashMap
capitais 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 Collections
para 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 LinkedHashMap
resultado nomeado e o retornamos.
De volta ao main()
método, percorremos cada item no mapa e imprimimos sua chave e valor.