我有这段代码,我想在其中返回一个元素(如果存在),否则返回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中遇到了异常
最佳答案
orElseGet
接受供应商。您想使用orElse
:
.findFirst().orElse(null);
使用供应商返回null没有多大意义,但是如果您愿意的话,它将看起来像:
.findFirst().orElseGet(() -> null); //if argument is null, you get the NPE
orElseGet
的JavaDocs(感谢bambam的补充说明)提到了它: