是否需要在Streams中使用orElse(null)?

时间:2016-07-16 12:36:22

标签: java java-8 java-stream

我使用此代码段查找字符串列表中包含V字符的第一项:

'o'

因此,这会找到第一个具有List<String> words = Arrays.asList("hi", "hello", "bye", "goodbye"); String s1 = words.stream().filter(word -> word.contains("o")).findFirst().orElse(null); (hello)的项目,如果找不到任何内容,它将返回'o'指定的null。所以我的问题是:

是否真的有必要使用orElse(null),如果我没有指定它,如果找不到匹配项,它将作为默认值返回什么?

2 个答案:

答案 0 :(得分:3)

findFirst返回Optional。您需要使用orElse方法之一从中获取实际值。

答案 1 :(得分:1)

如前所述,findFirst()会返回Optional<String>。 Optional具有避免空值检查的优点,并提供了使用orElse("deafault")定义默认值的机会。写orElse(null)绝对会适得其反!