我使用此代码段查找字符串列表中包含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)
,如果我没有指定它,如果找不到匹配项,它将作为默认值返回什么?
答案 0 :(得分:3)
findFirst
返回Optional
。您需要使用orElse
方法之一从中获取实际值。
答案 1 :(得分:1)
如前所述,findFirst()
会返回Optional<String>
。 Optional具有避免空值检查的优点,并提供了使用orElse("deafault")
定义默认值的机会。写orElse(null)
绝对会适得其反!