在流中处理null而不进行过滤

时间:2018-06-05 13:42:55

标签: java java-8 java-stream

我想使用流API迭代Map,但是,如果在null的元素中出现任何EntrySet,我想做一些自定义处理。

因为我需要自定义处理空值,所以我不能只使用Stream::filter

使用我当前的功能(MyClass::f),

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

我得到NullPointerException

1 个答案:

答案 0 :(得分:3)

带有处理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