W tym programie nauczysz się sortować daną mapę według wartości w Javie.
Aby zrozumieć ten przykład, należy znać następujące tematy dotyczące programowania w języku Java:
- Interfejs mapy Java
- Java LinkedHashMap
Przykład: Sortuj mapę według wartości
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; ) )
Wynik
Klucz: Australia Wartość: Canberra Klucz: Nepal Wartość: Kathmandu Klucz: Anglia Wartość: Londyn Klucz: Indie Wartość: New Delhi Klucz: Stany Zjednoczone Wartość: Waszyngton
W powyższym programie stworzyliśmy LinkedHashMap
nazwane kapitele. Mapa przechowuje kraje i ich stolice.
Tutaj stworzyliśmy sortMap()
metodę, która pobiera mapę i zwraca posortowaną mapę.
Wewnątrz metody najpierw utworzyliśmy listę o nazwie capitalList na podstawie liter mapy. Następnie używamy sort()
metody Collections
do sortowania elementów listy.
sort()
Metoda przyjmuje dwa parametry: lista mają być sortowane i porównawczym . W naszym przypadku komparatorem jest wyrażenie lambda.
(l1, l2) -> l1.getValue().compareTo(l2.getValue())
Tutaj wyrażenie lambda przyjmuje dwa sąsiednie elementy (l1 i l2) z listy. Następnie użył getValue()
metody do uzyskania wartości i compareTo()
metody do porównania dwóch wartości.
Po operacji otrzymujemy posortowaną listę capitalList. Następnie po prostu konwertujemy listę na LinkedHashMap
nazwany wynik i zwracamy ją.
Wracając do main()
metody, przechodzimy przez każdy element na mapie i drukujemy jego klucz i wartość.