В этой программе вы научитесь сортировать данную карту по значениям в Java.
Чтобы понять этот пример, вы должны знать следующие темы программирования Java:
- Интерфейс карты Java
- 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()
методу, мы перебираем каждый элемент на карте и печатаем его ключ и значение.