У цій програмі ви навчитеся сортувати дану карту за значеннями в Java.
Щоб зрозуміти цей приклад, ви повинні знати такі теми програмування Java:
- Інтерфейс Java Map
- Java LinkedHashMap
Приклад: Сортування карти за значеннями
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; ) )
Вихідні дані
Ключ: Австралія Значення: Канберра Ключ: Непал Значення: Катманду Ключ: Англія Значення: Лондон Ключ: Індія Значення: Нью-Делі Ключ: США Значення: Вашингтон
У наведеній вище програмі ми створили LinkedHashMap
названі столиці. На карті зберігаються країни та їх столиці.
Тут ми створили sortMap()
метод, який бере карту і повертає відсортовану карту.
Всередині методу ми спочатку створили список із назвою capitalList із столиць карти. Потім ми використовуємо sort()
метод Collections
сортування елементів списку.
sort()
Метод приймає два параметри: список для сортування і компаратор . У нашому випадку компаратор - це лямбда-вираз.
(l1, l2) -> l1.getValue().compareTo(l2.getValue())
Тут лямбда-вираз бере два сусідні елементи (l1 та l2) списку. Потім він використовував getValue()
метод для отримання значення та compareTo()
метод для порівняння двох значень.
Після операції ми отримуємо відсортований список capitalList. Потім ми просто перетворюємо список на LinkedHashMap
іменований результат і повертаємо його.
Повернувшись до main()
методу, ми прокручуємо кожен елемент на карті та друкуємо його ключ та значення.