BiFunction和BiConsumers交错

时间:2019-07-15 16:44:34

标签: java performance functional-programming

考虑这样的课程:

class Aggregator<A,B> {
    private final List<BiFunction<A,B,B>> fns = new ArrayList<>();
    public void addConsumer(BiConsumer<A,B> consumer) {
        fns.add((a,b) -> {
            consumer.accept(a, b);
            return b;
        });
    }

    public void addFunction(BiFunction<A,B,B> function) {
        fns.add(function);
    }

    public B apply(A a, B b) {
        //some example usage
        B result = b;
        for (BiFunction<A, B, B> fn : fns) {
            result = fn.apply(a, result);
        }
        return result;
    }
}

有什么方法可以完成这种功能集合+应用程序而无需支付addConsumer中的间接费用吗?由于这是一次关闭,所以我要付出相当高的罚款,因为那时我总是碰堆。

简而言之:我想以尽可能少的性能开销组合任意数量的BiConsumerBiFunction。这只是一些示例代码,但是andThen-chaining并不能缓解问题。

0 个答案:

没有答案