繁体   English   中英

Java8列出返回元素或null

[英]Java8 Lists return element or null

我有这段代码,我想返回一个元素,如果存在,否则为null

List<String> myList = new ArrayList<>();
myList.add("Test");
myList.add("Example");
myList.add("Sth");

String str = myList.stream()
            .filter(x -> x.equals("eee"))
            .findFirst()
            .orElseGet(null);

但无论如何我在线程“main”java.lang.NullPointerException中得到了一个Exception

orElseGet接受供应商。 你想使用orElse

.findFirst().orElse(null);

使用供应商返回null没有多大意义,但如果你这样做,它看起来像:

.findFirst().orElseGet(() -> null); //if argument is null, you get the NPE

orElseGet的JavaDocs(感谢bambam对添加的评论)提到它:

抛出
NullPointerException - 如果value不存在而其他值为null

试试这段代码:

List<String> myList = new ArrayList<>();
myList.add("Test");
myList.add("Example");
myList.add("Sth");

String str = myList.stream()
        .filter(s -> null != s && s.equals("Test"))
        .findFirst()
        .orElseGet(() -> null);
System.out.println(str);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM