gpt4 book ai didi

java - 状态依赖过滤流

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

indicesArrays.stream().flatMap(n -> n.indices).sorted().filter(x->
//filter x if its difference with its predecessor is less then 5;
)

是否有一种“自然”的方式来对流进行这种依赖过滤?你会怎样做才是正确的?

这就是我会尝试的方法:

indicesArrays.stream().flatMap(n -> n.indices).sorted().filter(new Predicate<Integer>() {
Integer lastX = null;

@Override
public boolean test(Integer t) {
if (lastX == null) {
lastX = t;
return true;
}
final boolean include = t - lastX >= 5;
lastX = t;
return include;
}
});

但我不确定这是否是一个好方法,也不确定它总是有效......

最佳答案

在您的特定情况下以及当时最新的 openjdk 版本(jdk+b132),这将起作用,但不建议这样做。因为你的indexArrays很可能是Collection<SomeClassWithABoxedIntStreamField> ,其stream()方法返回一个顺序流,那么就不会产生干扰。

但是,如果 indexArrays.stream()返回一个并行流,您首先必须使用 Stream::sequential 将其转换为顺序流。处理该流可能会得到正确的结果。

无论如何,这种代码确实不推荐,并且可能与 future 的Java版本不兼容,它也违反了约定。

PS:看看IntStreamStream::flatMapToInt 。他们可以消除装箱和拆箱整数值的成本。

关于java - 状态依赖过滤流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37583804/

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