首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么在Guava库中没有reduce?

为什么在Guava库中没有reduce?
EN

Stack Overflow用户
提问于 2014-10-21 06:20:42
回答 1查看 4.4K关注 0票数 3

我想在我的安卓应用程序中使用函数式编程,但由于Java8不可用,我决定使用Guava Library。但是显然在Guava Library中没有REDUCE聚集体。如果有人能解释为什么会这样,我会很好奇,但我需要的是一个变通方法。

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

如果你已经在Android中使用了另一个库,也请让我知道。

EN

回答 1

Stack Overflow用户

发布于 2014-10-21 07:16:34

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

让我们想象一下Guava确实提供了这个。它必须看起来像这样

代码语言:javascript
运行
复制
FluentIterable.from(integers).foldr(
  new BiFunction<Integer, Integer, Integer>() {
    @Override Integer sum(Integer a, Integer b) {
      return a + b;
    }
  }, 0);

...versus...

代码语言:javascript
运行
复制
int sum = 0;
for (int value : integers) {
   sum += value;
}

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

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26475897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档