Sobes.tech
Назад к вопросам
Senior
5

Задача на Java Streams: отсортировать Map<String, Integer> по значению с помощью стримов

Компании, где спрашивали
Сбер Право

Ответ от нейросети

sobes.tech AI

Для сортировки Map<String, Integer> по значению с помощью Java Streams можно сделать так:

import java.util.*;
import java.util.stream.*;

public class SortMapByValue {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("apple", 3);
        map.put("banana", 1);
        map.put("orange", 2);

        // Сортируем по значению и собираем в LinkedHashMap для сохранения порядка
        Map<String, Integer> sorted = map.entrySet()
            .stream()
            .sorted(Map.Entry.comparingByValue())
            .collect(Collectors.toMap(
                Map.Entry::getKey,
                Map.Entry::getValue,
                (e1, e2) -> e1,
                LinkedHashMap::new
            ));

        System.out.println(sorted); // {banana=1, orange=2, apple=3}
    }
}

Здесь мы создаём стрим из entrySet, сортируем по значению с помощью Map.Entry.comparingByValue(), а затем собираем результат в LinkedHashMap, чтобы сохранить порядок элементов.