English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной учебник Java

Java Управление потоком

Java Массивы

Java Ориентированность на объекты (I)

Java Ориентированность на объекты (II)

Java Ориентированность на объекты (III)

Обработка исключений Java

Java Списки (List)

Java Queue (очередь)

Java Map-сборники

Java Set-сборники

Java Ввод/вывод (I/O)

Java Reader/Writer

Другие темы Java

Сортировка карт по значению в Java

Java полные примеры

В этом примере вы узнаете, как сортировать карты по значению в 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() мы проходим по каждому элементу карты и выводим его ключ и значение.

Java полные примеры