List<User> users = Arrays.asList(new User("John", 30), new User("Julie", 35));
int result = users.stream()
.reduce(0,
(partialAgeResult, user) -> {
// accumulator is called twice
System.out.println(MessageFormat.format("partialAgeResult {0}, user {1}", partialAgeResult, user));
return partialAgeResult + user.getAge();
},
(integer, integer2) -> {
// combiner is never called
System.out.println(MessageFormat.format("integer {0}, integer2 {1}", integer, integer2));
return integer * integer2;
});
System.out.println(MessageFormat.format("Result is {0}", result));
问题就在这里。您在合并器中是乘法而不是加法。
(integer, integer2) -> {
// combiner is never called
System.out.println(MessageFormat.format("integer {0}, integer2 {1}", integer, integer2));
return integer * integer2; //<----- Should be addition
});
组合器用于适当地组合并行操作的各个部分,因为这些操作可以在原始流的各个“部分”上独立执行。
一个简单的例子是求和一个元素列表。在并行操作中可以有多种部分和,因此您需要在合并器中对部分和求和以得到总和(这是一个很好的练习,您可以亲自尝试查看)。
我有以下内容(使用org.json.simple): 问题是在我调用map将流元素转换为之后,在下一次调用map时,元素仍然是,而不是。不确定我在这里做错了什么? 相关:是否可以在Java 8中强制转换流?
4.6.6 强制属性操作符 在程序中,我们有时需要对同一个存储单元以不同的属性来访问,或对一些不确定的存储属性需要显式指定等,这时,我们就需要强制属性操作符PTR。该操作符的作用有点象C语言中的类型强制方法。 对于指令:MOV [BX], 1H,其目标操作数[BX]是寄存器间接寻址方式,它指向一个存储单元。在作传送操作时,是把“1H”扩展成8位作字节传送,还是扩展成16位作字传送呢?这就使该指令具
问题内容: 我正在将数据从javascript应用程序发送到MVC5控制器,但是,当数据提交到Submit controller操作时,它永远不会被调用。我有一些非常简单的映射器,它们创建以下JSON对象: 然后,我使用以下代码发送数据: 我的控制器代码如下: 我有以下问题: 但是,从不会调用Submit,但是,如果我注释掉了控制器参数,那么它将被调用,这是为什么呢? 从上面看来,控制器框架似乎无
说我有以下几点: 并且在该操作创建器中,我想访问全局存储状态(所有还原器)。这样做是否更好: 或者这个:
我想检查一个数字是二进制还是十进制,但从1到n都不行。例如,从1到10我们有两个十进制数字,其中包含0,1。我如何更改它?
然而,如果我省略了调用,我的应用程序似乎运行良好,没有任何明显的错误。这个方法是否只是为了加快速度,预计一个可能很长的初始化,这样它就不会在第一次使用时减慢你的速度(急切的和懒惰的初始化)?或者,如果我没有正确初始化ThreeTenABP,是否会冒得到错误结果的风险?