Program Java do sortowania mapy według wartości

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 LinkedHashMapnazwane 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 Collectionsdo 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 LinkedHashMapnazwany wynik i zwracamy ją.

Wracając do main()metody, przechodzimy przez każdy element na mapie i drukujemy jego klucz i wartość.

Interesujące artykuły...