从 Map.java 的文档 -
Map.of()
和Map.ofEntries()
静态工厂方法提供了一种创建不可变映射的便捷方法。
但是当我已经可以 使用重载方法 时……
Map.of("k1","v1","k2","v2","k3","v3"...);
… Map.ofEntries 的用途是什么
返回一个不可变映射,其中包含从给定条目中提取的键和值,并且条目本身不存储在映射中。
原文由 Mani 发布,翻译遵循 CC BY-SA 4.0 许可协议
从 Map.java 的文档 -
Map.of()
和Map.ofEntries()
静态工厂方法提供了一种创建不可变映射的便捷方法。
但是当我已经可以 使用重载方法 时……
Map.of("k1","v1","k2","v2","k3","v3"...);
… Map.ofEntries 的用途是什么
返回一个不可变映射,其中包含从给定条目中提取的键和值,并且条目本身不存储在映射中。
原文由 Mani 发布,翻译遵循 CC BY-SA 4.0 许可协议
Java 9 引入了使用简洁的一行代码创建小型不可修改的 Collection 实例,对于映射,工厂方法的签名是:
static <K,V> Map<K,V> of(K k1, V v1, K k2, V v2, K k3, V v3)
此方法重载为具有 0 到 10 个键值对,例如
Map<String, String> map = Map.of("1", "first");
Map<String, String> map = Map.of("1", "first", "2", "second");
Map<String, String> map = Map.of("1", "first", "2", "second", "3", "third");
同样,您最多可以有十个条目。
对于超过 10 个键值对的情况,有一种不同的方法:
static <K,V> Map<K,V> ofEntries(Map.Entry<? extends K,? extends V>... entries)
这是用法。
Map<String, String> map = Map.ofEntries(
new AbstractMap.SimpleEntry<>("1", "first"),
new AbstractMap.SimpleEntry<>("2", "second"),
new AbstractMap.SimpleEntry<>("3", "third"));
原文由 Sachin Thapa 发布,翻译遵循 CC BY-SA 4.0 许可协议
8 回答6k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
2 回答3.2k 阅读
2 回答3.9k 阅读
1 回答2.2k 阅读✓ 已解决
3 回答1.6k 阅读✓ 已解决
关于如何创建 26 个元素的地图的任何猜测?
您已经链接的 Map 中的两个工厂方法之间的主要区别在于:
Map.ofEntries
来自 _JEP-269:集合的便利工厂方法_:
Set keys = Set.of(“z”, “o”, “tw”, “th”, “fo”, “fi”, “si”, “se”, “e”, “n”, “te”);
Map map = Map.of(“z”, 0, “o”, 1,
“tw”, 2, “th”, 3, “fo”, 4, “fi”, 5,
“si”, 6, “se”, 7, “e”, 8, “n”, 9, “te”, 10); // this would not compile
Map map = Map.ofEntries(Map.entry(“z”,0),
Map.entry(“o”,1),Map.entry(“t”,2)…so on);
”`
此外,从
Map.entry()
的文档中也引入了 Since:9 -类似于最近介绍的 Immutable Map Static Factory Methods 的特性。