gpt4 book ai didi

java - 如果大小为 1,如何将流减少为单个值;如果大小 > 1,如何将流减少为默认值

转载 作者:行者123 更新时间:2023-12-04 02:31:34 25 4
gpt4 key购买 nike

我有一个包含 0..n 个值的流。我想:

  • 如果流 count()1,则返回流的值
  • 如果流 count()0> 1,则返回 defaultValue

我开发的代码解决了这个问题:

String result = Stream.of("someValue")
.map(Optional::of) // reduce desn't accept `null`
.reduce((a, b) -> Optional.empty()) // instead `null`
.flatMap(Function.identity()) // unpack `Optional`
.orElseGet(() -> "defaultValue"); // if returned our optional is empty,
// so we can return default value
System.out.println(result);

但是这种将流值包装到 Optional 中的技巧并不容易理解(在我看来)。你知道任何其他基于流 API 的解决方案吗?如何以易于阅读的方式编写此内容?

最佳答案

我认为您根本不需要将元素包装到可选项中?你可以这样做:

yourStream.limit(2).reduce((x, y) -> defaultValue).orElse(defaultValue)

limit(2),这样您就不会消耗整个流。您最多只需要检查 2 个元素。

关于java - 如果大小为 1,如何将流减少为单个值;如果大小 > 1,如何将流减少为默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63899040/

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