【发布时间】:2017-08-28 12:40:29
【问题描述】:
我有以下哈希映射
Map<String,Double> map_1 = new LinkedHashMap<>();
带有一些键:例如[“hello_1”、“hello_2”、“hello_3”]。
然后,我使用流 API 遍历这些键并将新结果保存在 map2 中:
Map<String,Double> map_2 = new LinkedHashMap<>();
map_2 = map_1.keySet()
.stream()
.collect(
Collectors.toMap(entry -> entry,
entry -> {
Double value = map_1.get(entry);
return (value + 5);
}));
但是新的散列映射有另一个顺序的键,尽管它被定义为 LinkedHashMap。我认为问题出在流 + 收集步骤期间。
谁能给我一个解决方案? 谢谢
【问题讨论】:
-
用
LinkedHashMap实例初始化map_2是没有意义的,当为map_2变量分配新值时,您将用完全不同的对象覆盖它。顺便说一句,如果您想将5添加到Map的所有值中,您可以简单地使用map_1.replaceAll((key,value) -> value+5);就地完成。如果您还需要第二张地图,Map<String,Double> map_2=new LinkedHashMap<>(map_1); map_2.replaceAll((key,value) -> value+5);可以做到。 -
map_1.keySet() .stream() .collect( Collectors.toMap(entry -> entry, entry -> map_1.get(entry) +5, (e1,e2)-> e1, LinkedHashMap::new));
标签: java java-8 hashmap java-stream linkedhashmap