Java8 列表返回元素或 null

标签 java java-8 functional-programming java-stream option-type

我有这段代码,如果存在,我想返回一个元素,否则返回 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 的补充评论)提到它:

Throws:
NullPointerException - if value is not present and other is null

关于Java8 列表返回元素或 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53893921/

相关文章:

java - 将 Scala 项目包含在 Java Maven 依赖项中

.net - 为什么无限递归不会在F#中遇到堆栈溢出异常?

scala - 理解Y-Combinator的实现

java - pact-jvm-consumer-specs2 - 缺少 : [error] method: GET

java - 覆盖具有相同类策略与策略实例的 equals 方法

java - 将AffineTransform应用于TexturePaint

java - java流中遇到顺序保存

java - 如何在 java8 中使用流重写以下代码

java - 我可以将一个流分成多个较小的流吗

javascript - 实现教堂数字和后继函数