gpt4 book ai didi

java - 过滤流的日志记录大小

转载 作者:行者123 更新时间:2023-11-29 08:27:07 26 4
gpt4 key购买 nike

如果有超过 1 个结果在过滤器中存活,我希望此流抛出异常。有什么办法可以实现吗?

一个想法是使用 .count(),但我必须重新创建流。

Optional<Result> filteredresultSet = results.stream()
.filter(c -> c.equals("TOMATO))
.findAny();

最佳答案

您可以将 findAny() 替换为 reduce() 并在累加器中抛出异常:

Optional<String> filteredresultSet = results.stream()
.filter("TOMATO"::equals)
.reduce((s1, s2) -> {
throw new MyException();
});

要准确找出剩余的元素数量并仍然检索第一个元素的替代方法是使用小型数组或自定义对象来存储计数和第一个元素:

results.stream().filter("TOMATO"::equals).collect(Container::new, (c, e) -> {
c.count++;
if (c.value == null)
{
c.value = e;
}
}, (c1, c2) -> c1.count += c2.count);

这将返回一个 Container 的实例,如果流为空,则返回 null。然后,您可以检查 count 并返回 valueOptional

关于java - 过滤流的日志记录大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51716601/

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