Как из списка отфильтровать его и преобразовать в карту - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь из списка строк отфильтровать его и загрузить результаты в Map<String,String> со строками, прошедшими тест, и общей причиной.

Вот почему я пытаюсь:

Map<String,String> invalidStrings = null;

invalidStrings = src.getAllSubjects()
                 .stream()
                 .filter(name -> !(name.contains("-value") || name.contains("-key")))
                 .collect(Collectors.toMap(Function.identity(), "Some Reason"));

Вот что я получаю:

Метод toMap (Function, Function) в типе Collectorsнеприменимо для аргументов (Function, String)

Не знаю, почему я не могу этого сделать ... Везде, где я ищу, предложения в основном совпадают с тем, что я делаю.

1 Ответ

0 голосов
/ 27 декабря 2018

Это важная часть ошибки:

Метод toMap (функция, функция) <--- обратите внимание на <code>Function, Function

Это означает, что toMap ожидает, что первый аргумент будет функцией, которую вы правильно сделали с помощью Function.identity() т.е. v -> v, но второе переданное вами значение будет String

Скорее всего, преобразователь значений должен быть функцией:

 .collect(Collectors.toMap(Function.identity(), v -> "Some Reason"));

Обратите внимание на v -> "Some Reason";

...