- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
传统的函数式语言在列表的初始值和累加器方面考虑减少。在 Java 中,事情更复杂,因为它需要 BinaryOperator。
我想知道我们是否有更好的方法来编写这种函数:
public JsonObject growPath(final JsonObject obj) {
// paths is a list of string
return this.paths.stream().reduce(obj, (child, path) -> {
if (!child.containsKey(path) || !(child.get(path) instanceof JsonObject)) {
// We do override anything that is not an object since the path
// specify that it should be an object.
child.put(path, JsonObject.create());
}
return child.getObject(path);
} , (first, last) -> {
return last;
});
}
我想避免使用 BinaryOperator 参数。我应该使用不同于 reduce 的东西吗?
最佳答案
您为这项工作使用了错误的工具。您正在执行修改 obj
的操作,这与缩减完全无关。如果我们忽略修改方面,这个操作是一个左折叠,Streams 不支持(通常)。您只能使用 reduce
来实现它,如果函数是关联的,而您的函数不是。所以你最好在没有 Streams 的情况下实现它:
public JsonObject growPath(JsonObject obj) {
for(String path: this.paths)
obj = (JsonObject)obj.compute(path,
(key,child)->child instanceof JsonObject? child: JsonObject.create());
return obj;
}
关于java-8 - 仅使用 BiFunction 进行归约,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39996334/
我有一个需要映射/缩减的文件,其中输出需要总和和日期的最大值。我有总和部分的工作,但是,我不确定如何将最大日期作为减少的输出的一部分。 输入数据如下所示: ID1, ID2, date,
我必须为 C 的一个子集构建一个编译器。显然,因为这是我第一次做这样的事情,所以进展得不是很好。然而。我目前正在尝试为所述子集构建词法分析器和解析器。 我决定逐步构建它,并在出现错误时进行修复。所以我
我听说过很多关于 Map/Reduce 的内容,尤其是在 Google 大规模并行计算系统的背景下。到底是什么? 最佳答案 来自 Google 的摘要 MapReduce研究发表页面: MapRedu
我正在使用 JavaScript 原生 reduce,但是我想稍微改变分组以获得我想要的结果。我有一个数组如下: const people = [ {name: "John", age: 23,
我试图让一个简单的 map reduce 在 MongoVUE 中工作,但它没有返回任何结果,我只是想让它输出每个 userID 的计数,这样我就可以有一个工作示例来构建。 function Map(
我可能错了,但我见过的所有(?)Apache Hadoop 示例都将存储在本地文件系统上的文件作为输入(例如 org.apache.hadoop.examples.Grep) 有没有办法在 Hadoo
如何在 Swift 4 中以更优雅的方式完成类似以下的事情,例如使用 map 和/或 reduce。 为了在此处发布,我简化了代码,但请注意它确实需要使用索引。 var numbers = [50,
我是一名优秀的程序员,十分优秀!