在我的代码中的某个时刻,我从地图创建了一个 Set<Map.Entry<K, V>>
。现在我想重新创建相同的地图形式,所以我想将 HashSet<Map.Entry<K, V>>
转换回 HashMap<K, V>
。 Java 是否有执行此操作的本机调用,或者我是否必须遍历集合元素并手动构建映射?
原文由 Joeblackdev 发布,翻译遵循 CC BY-SA 4.0 许可协议
在我的代码中的某个时刻,我从地图创建了一个 Set<Map.Entry<K, V>>
。现在我想重新创建相同的地图形式,所以我想将 HashSet<Map.Entry<K, V>>
转换回 HashMap<K, V>
。 Java 是否有执行此操作的本机调用,或者我是否必须遍历集合元素并手动构建映射?
原文由 Joeblackdev 发布,翻译遵循 CC BY-SA 4.0 许可协议
涉及 Collectors.toMap
的更简单的 Java-8 解决方案:
Map<Integer, String> mapFromSet = set.stream()
.collect(Collectors.toMap(Entry::getKey, Entry::getValue));
如果遇到重复键,将抛出 IllegalStateException
。
原文由 Tagir Valeev 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.4k 阅读
8 回答6.3k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
1 回答2.1k 阅读✓ 已解决
java中没有内置API可以在
HashSet
和HashMap
之间直接转换,你需要遍历集合并使用Entry
填写地图一种方法:
Though what is the purpose here, if you do any changes in
Set
that will also reflect inMap
as set returned byMap.entrySet
is backup byMap
。请参阅下面javadoc
: