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 LinkedHashMap
pojmenovaná 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 Collections
tří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 LinkedHashMap
pojmenovaný 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.