Обрабатывать нуль в потоке без фильтрации - PullRequest
0 голосов
/ 05 июня 2018

Я хочу перебрать Map с помощью API потоков, но, если какой-либо null встречается в элементе EntrySet, я хочу выполнить некоторую пользовательскую обработку.

Так как,Мне нужна пользовательская обработка нулей, я не могу просто использовать Stream::filter

Используя мою текущую функцию (MyClass::f),

HashMap<String,String> map =new HashMap<>(); 
map.entrySet().stream().map(MyClass::f);

Я получаю NullPointerException.

1 Ответ

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

map с функцией, которая обрабатывает null и возвращает оригинал для других объектов.

Без конкретного варианта использования это лучшее, что я могу предоставить:

List<String> s = Arrays.asList("foo", null, "bar", null);
s.stream()
  .map(e -> (e == null) ? "woops, something was null" : e)
  .forEach(System.out::println);

должно дать вам

foo 
woops, something was null
bar
woops, something was null
...