gpt4 book ai didi

java - 为什么 Guava 库中没有 reduce?

转载 作者:太空宇宙 更新时间:2023-11-03 11:57:12 25 4
gpt4 key购买 nike

我想在我的 Android 应用程序中使用函数式编程,但由于 Java8 不可用,我决定使用 Guava 库。但显然 Guava 库中没有 REDUCE 聚合。如果有人能解释为什么会这样,我很想知道,但我需要的是一种解决方法。

如何模拟 Guava 中的 REDUCE/DROP 函数式编程功能?例如,如何在 FluentInterface 上计算总和或平均值,而无需自己从头开始编写代码(函数式编程的主要原则之一,不是吗?)。

如果您在 Android 中使用其他库完成此操作,也请告诉我。

最佳答案

Guava 不支持这一点,因为您需要构建的匿名类最终会比传统的命令式 for 循环冗长得多。 Guava 故意只提供一组有限的函数式编程风格特性:参见例如https://github.com/google/guava/wiki/FunctionalExplained#Caveats了解详情。

让我们假设 Guava 确实提供了这个。它必须看起来像

FluentIterable.from(integers).foldr(
new BiFunction<Integer, Integer, Integer>() {
@Override Integer sum(Integer a, Integer b) {
return a + b;
}
}, 0);

...与...

int sum = 0;
for (int value : integers) {
sum += value;
}

第二个版本需要的样板文件少得多。在语言中没有 lambda 的情况下,这是不值得的。

关于java - 为什么 Guava 库中没有 reduce?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26475897/

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