gpt4 book ai didi

java - 映射和 FindFirst

转载 作者:搜寻专家 更新时间:2023-11-01 01:50:08 24 4
gpt4 key购买 nike

在管道中使用findFirst()和map()是否有效。findFirst是短路方法而map是中间操作。

this.list.stream().filter(t -> t.name.equals("pavan")).findFirst().map(toUpperCase()).orElse(null);

像上面那样在管道中使用 map 是否有效??

最佳答案

是的,您可以findFirst 之后使用map。这里要知道的关键是 findFirst() 返回一个 Optional,因此,您不能在不先检查可选值是否有值的情况下简单地使用返回值。下面的代码片段假设您正在处理 Person 类的对象列表。

Optional<String> result = this.list.stream()
.filter(t -> t.name.equals("pavan")) // Returns a stream consisting of the elements of this stream that match the given predicate.
.findFirst() // Returns an Optional describing the first element of this stream, or an empty Optional if the stream is empty. If the stream has no encounter order, then any element may be returned.
.map(p -> p.name.toUpperCase()); // If a value is present, apply the provided mapping function to it, and if the result is non-null, return an Optional describing the result. Otherwise return an empty Optional.

// This check is required!
if (result.isPresent()) {
String name = result.get(); // If a value is present in this Optional, returns the value, otherwise throws NoSuchElementException.
System.out.println(name);
} else {
System.out.println("pavan not found!");
}

您的代码片段的另一个错误是您使用 toUpperCase 的地方。它需要一个字符串,而在您的代码片段中传递的隐式参数是 Person 类的对象。

关于java - 映射和 FindFirst,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38518313/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com