Java 在收集散列映射键的过程中保持它们的顺序

Java 在收集散列映射键的过程中保持它们的顺序,java,java-8,hashmap,java-stream,linkedhashmap,Java,Java 8,Hashmap,Java Stream,Linkedhashmap,我有下面的哈希映射 Map<String,Double> map_1 = new LinkedHashMap<>(); Map\u 1=newlinkedhashmap(); 带有一些键:例如[你好1”,“你好2”,“你好3”] 然后,我使用流API迭代这些键,并将新结果保存在map2中: Map<String,Double> map_2 = new LinkedHashMap<>(); map_2 = map_1.keySet()

我有下面的哈希映射

Map<String,Double> map_1 = new LinkedHashMap<>();
Map\u 1=newlinkedhashmap();
带有一些键:例如[你好1”,“你好2”,“你好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);
                                }));
Map\u 2=newlinkedhashmap();
map_2=map_1.keySet()
.stream()
.收集(
收集器.toMap(条目->条目,
条目->{
Double value=map_1.get(条目);
返回值(值+5);
}));
但是新的散列映射有另一个顺序的键,尽管它被定义为LinkedHashMap。我认为问题在于流+收集步骤

有人能给我一个解决方案吗?
谢谢

在本例中,在收集步骤中,键的顺序实际上被弄乱了


您需要指定要收集到
LinkedHashMap

您能解释一下我必须指定的内容吗?使用
LinkedHashMap
实例初始化
map\u 2
没有任何意义,在为
map\u 2
变量指定新值时,您将使用完全不同的对象覆盖它。顺便说一下,如果您想将
5
添加到
Map
的所有值中,您可以简单地使用
Map\u 1.replaceAll((键,值)->value+5)以就地执行。如果您仍然需要第二个映射,
map map\u 2=newlinkedhashmap(map\u 1);映射2.replaceAll((键,值)->值+5)可以做到。map_1.keySet().stream().collect(Collectors.toMap(entry->entry,entry->map_1.get(entry)+5,(e1,e2)->e1,LinkedHashMap::new));