【发布时间】:2017-05-05 13:21:59
【问题描述】:
什么相当于 Scala 在 Java 8 中的 foldLeft?
我很想它是reduce,但reduce 必须返回与它所减少的相同类型的东西。
例子:
import java.util.List;
public class Foo {
// this method works pretty well
public int sum(List<Integer> numbers) {
return numbers.stream()
.reduce(0, (acc, n) -> (acc + n));
}
// this method makes the file not compile
public String concatenate(List<Character> chars) {
return chars.stream()
.reduce(new StringBuilder(""), (acc, c) -> acc.append(c)).toString();
}
}
上面代码中的问题是accumulator:new StringBuilder("")
因此,谁能指出与foldLeft/fix my code 的正确等效项?
【问题讨论】:
-
仅供参考:语言的名称是“Scala”,而不是“SCALA”。 (我相信有一种不同的语言叫做“SCALA”,可能不是你的意思。)
-
@JörgWMittag 除非您有来源可以找到具有相同名称但大写的不同语言,否则我会感到非常惊讶。我认为大写的拼写来自习惯于大写语言的老经理,比如 BASIC 和 FORTRAN :D
-
@nafg:我尝试用谷歌搜索它,但这有点困难,因为谷歌搜索“SCALA”也会返回“Scala”的结果。我相信,我是在我们今天所说的 IBM 中端系统上的“大数据分析”的背景下看到的,但在“大数据”(或 Scala)出现之前。但是,我个人从未在 IBM 中端系统上工作过,所以我不记得相关工具、框架、库或语言的名称,以执行更好的 google 查询。 Scala 用于大数据,IBM 大力推动 Scala 的事实也无济于事。
标签: java java-8 reduce foldleft