Поток Java 8 HashMap <String, ArrayList <String>> в SortedMap <String, Integer> - PullRequest
0 голосов
/ 26 июня 2018

У меня есть HashMap<String, ArrayList<String>> professions, и я хочу создать SortedMap<String, Integer>, где первая запись - это строка, аналогичная первой записи в хэш-карте, а вторая запись - это целое число, равное размеру ArrayList в первом карта, соответствующая строке. Я также хочу, чтобы sortedMap сортировался по первой записи (строке).

Я попробовал следующее:

professions.entrySet().stream()
            .collect(Collectors.groupingBy(e -> e.getKey(), TreeMap::new,
                    Collectors.mapping(e -> e.getValue().size()));

Затмение говорит мне The method mapping(Function<? super T,? extends U>, Collector<? super U,A,R>) in the type Collectors is not applicable for the arguments ((<no type> e) -> {}), а также The method getValue() is undefined for the type T.

Я не уверен, что мое решение вообще неверно, или это просто затмение, которое не может определить тип.

1 Ответ

0 голосов
/ 26 июня 2018

Вы ищете коллектор toMap, а не groupingBy:

Map<String, Integer> resultSet = 
     professions.entrySet()
                .stream()
                .collect(Collectors.toMap(Map.Entry::getKey,
                        e -> e.getValue().size(),
                        (left, right) -> left, TreeMap::new));
...