English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этом примере вы узнаете, как сортировать карты по значению в Java.
import java.util.*; public class SortMap { public static void main(String[] args) { LinkedHashMap<String, String> 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"); Map<String, String> result = sortMap(capitals); for (Map.Entry<String, String> entry : result.entrySet()) { System.out.print("Key: " + entry.getKey()); System.out.println(" Value: " + entry.getValue()); } } public static LinkedHashMap<String, String> sortMap(LinkedHashMap<String, String> map) { List<Map.Entry<String, String>> capitalList = new LinkedList<>(map.entrySet()); Collections.sort(capitalList, (o1, o2) -> o1.getValue().compareTo(o2.getValue())); LinkedHashMap<String, String> result = new LinkedHashMap<>(); for (Map.Entry<String, String> entry : capitalList) { result.put(entry.getKey(), entry.getValue()); } return result; } }
При запуске этой программы, вывод будет:
Key: Australia Value: Canberra Key: Nepal Value: Kathmandu Key: England Value: London Key: India Value: New Delhi Key: United States Value: Washington
В вышеуказанном примере мы храним карту стран/регионов и их столицы в переменной capitals.
У нас есть метод sortMap(), который принимает двунаправленную链ку и возвращает отсортированную двунаправленную链ку.
Внутри метода мы преобразуем хеш-карту в список capitalList. Затем мы используем метод sort(), который принимает список и компаратор.
В нашем примере компаратор — это lambda-выражение, которое сравнивает значения из двух списков o1 и o2 с помощью o1.getValue().compareTo(o2.getValue()).
После вычислений мы получаем отсортированный список capitalList. Затем мы просто преобразуем список в LinkedHashMap результат и возвращаем.
В методе main() мы проходим по каждому элементу карты и выводим его ключ и значение.