Program Java pro třídění mapy podle hodnot

V tomto programu se naučíte třídit danou mapu podle hodnot v Javě.

Abychom porozuměli tomuto příkladu, měli byste znát následující programovací témata Java:

  • Rozhraní Java Map
  • Java LinkedHashMap

Příklad: Řazení mapy podle hodnot

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

Výstup

 Klíč: Austrálie Hodnota: Canberra Klíč: Nepál Hodnota: Káthmándú Klíč: Anglie Hodnota: Londýn Klíč: Indie Hodnota: Nové Dillí Klíč: USA Hodnota: Washington

Ve výše uvedeném programu jsme vytvořili LinkedHashMappojmenovaná velká písmena. Mapa ukládá země a jejich hlavní města.

Zde jsme vytvořili sortMap()metodu, která vezme mapu a vrátí seřazenou mapu.

Uvnitř metody jsme nejprve vytvořili seznam s názvem capitalList z hlavních měst mapy. Potom použijeme sort()metodu Collectionstřídění prvků seznamu.

sort()Metoda má dva parametry: seznam být řazeny a komparátor . V našem případě je komparátor lambda výraz.

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

Zde výraz lambda přebírá dva sousední prvky (l1 a l2) seznamu. Poté použila getValue()metodu k získání hodnoty a compareTo()metodu k porovnání dvou hodnot.

Po operaci dostaneme seřazený seznam capitalList. Potom jednoduše převedeme seznam na LinkedHashMappojmenovaný výsledek a vrátíme jej.

Zpět v main()metodě procházíme každou položkou v mapě a tiskneme její klíč a hodnotu.

Zajímavé články...