我有这段代码,我想在其中返回一个元素(如果存在),否则返回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中遇到异常
答案 0 :(得分:15)
orElseGet
获取一个供应商。您要使用orElse
:
.findFirst().orElse(null);
使用供应商返回null没多大意义,但是如果您愿意,它看起来像:
.findFirst().orElseGet(() -> null); //if argument is null, you get the NPE
orElseGet
的JavaDocs(感谢bambam的评论)提到了它:
抛出:
NullPointerException -如果不存在值且other为null
答案 1 :(得分:0)
尝试以下代码:
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);