【发布时间】:2018-10-25 14:33:05
【问题描述】:
鉴于嵌套的 HashMap HashMap<Integer,HashMap<Integer,BigDecimal>> 是否可以使用并行流将内部 HashMap 值设置为零
可接受的副作用和尊重不干涉规则?
例如,给定HashMap:
HashMap<Integer,HashMap<Integer,BigDecimal>> myMap = null;
是最终的forEach:
myMap.entrySet().parallelStream().forEach(e -> {
e.getValue().entrySet().parallelStream().forEach(e1 -> {
e1.setValue(new BigDecimal(0));
});
});
可接受的副作用和尊重不干扰规则?
【问题讨论】:
-
我已经投票结束这个问题,因为不清楚你在问什么。请参阅:stackoverflow.com/help/how-to-ask 并相应地编辑问题。
-
查看这个问题的答案:stackoverflow.com/questions/32837415/…
-
基本上,我询问代码是否尊重 Java Stream 文档中报告的模式,特别是在涉及非干扰和副作用规则时。
-
这可能是由于
HashMap的条目的setValue方法已实现的方式,至少当您可以保证没有哈希映射实例在外部出现多次时地图的价值。但是,myMap.values().forEach(m -> m.replaceAll((k,v) -> BigDecimal.ZERO));怎么样?与您的并行操作相比,它的运行速度快了多少?
标签: java java-stream