【发布时间】:2020-10-28 10:37:39
【问题描述】:
我有两个地图 map1 和 map2。我想按特定顺序组合这两个地图。 假设我有两张地图
Map<String, String> map1 = new HashMap<>();
Map<String, String> map2 = new HashMap<>();
map1.put("id1", "3895");
map1.put("id2", "6754");
map1.put("id3", "7896");
map1.put("id4", "1122");
map2.put("month1", "Jan");
map2.put("month2", "Mar");
map2.put("month3", "Dec");
map2.put("month4", "Aug");
现在我想组合这两张地图,以便第三张地图的元素按以下顺序排列。 Map3 中的预期顺序。
("id1", "3895")
("month1", "Jan")
("id2", "6754")
("month2", "Mar")
("id3", "7896")
("month3", "Dec")
("id4", "1122")
("month4", "Aug")
我如何实现这一目标?我尝试使用 putAll 和 LinkedHashMap,但结果不是预期的。
使用 LinkedHashMap -
Map<String, String> merged = Stream.concat(map1.entrySet().stream(), map2.entrySet().stream())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (x, y) -> y, LinkedHashMap::new));
结果是
("id1", "3895")
("id2", "6754")
("id3", "7896")
("id4", "1122")
("month1", "Jan")
("month2", "Mar")
("month3", "Dec")
("month4", "Aug")
这不是我的预期。
【问题讨论】:
-
这能回答你的问题吗? Java Ordered Map
-
This one might also回答你的问题。
-
您没有说明您在第三张地图中使用了哪种类型的
Map,但HashMap不起作用,因为HashMaps 没有顺序。您应该能够通过使用LinkedHashMap(按插入顺序维护条目)并按所需顺序单独插入项目来实现您想要的。 -
@Nicolas 由于您当前拥有的两个地图是
HashMap对象,它们是无序地图,因此以特定顺序合并它们没有任何意义完全没有。 -
@Nicolas 你能自己尝试一下吗? StackOverflow 不是一个为我编写代码的网站。即使借助网络搜索,我所说的哪一部分您觉得自己难以克服?
标签: java collections java-8 hashmap java-stream