java - Java 11 不可变地图:创建 Map.Entry
问题描述
在 Java 11 中有一组java.util.Map
允许实例化的静态方法AbstractImmutableMap
:
static <K, V> Map<K, V> of(K k1, V v1) { return new Map1(k1, v1); }
static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2) { return new MapN(new Object[]{k1, v1, k2, v2}); }
// ... some more "vararg" static methods until 10 pairs (inclusive).
还有另一种方法,几乎相同,除了它是 true-vararg:
static <K, V> Map<K, V> ofEntries(Map.Entry<? extends K, ? extends V>... entries) { /* impl here */ }
我想使用后一种方法,因为它允许将条目数扩展到超过 10 个。问题是,我不知道如何创建Map.Entry
. 它在不同的s中有很多实现Map
,但是没有new
运算符或静态结构方法,而Map
有它。
Map#ofEntries
也在内部使用Map#copyOf
,但是如果没有已经存在的实现,我找不到使用它的方法,其中Map
包含一些条目。:/
我试过搜索它,但找不到答案。
➥ 所以,我的问题是:它打算如何使用Map#ofEntries
?或者有一种方法可以在Map.Entry
不编写我自己的实现或使用匿名类的情况下进行实例化?
解决方案
您可以使用该static
Map#entry
方法创建一个单一的、不可修改的实例Map.Entry
:
Map<String, Integer> map = Map.ofEntries(Map.entry("One", 1), Map.entry("Two", 2));
打印map
会产生以下输出:
{One=1, Two=2}
推荐阅读
- data-structures - 链表的节点应该存储谁的地址:其他节点,还是以节点为字段的数据结构?
- javascript - 使用 Github Gallery,无法将其限制在容器 div 中
- javascript - 在对象中的每个函数之前调用函数的最佳方法?
- python - 在 python pandas 中设置日期列
- python - 我用麦克。在我尝试将 opencv 安装到我的系统之前,我的 import numpy 工作正常
- python - 尝试安装 pip 时语法无效
- javascript - iframe 未加载
- python - Numpy:基于单独的向量交换二维数组的位置
- python - Django contect_object_name 未在视图中生成上下文字典
- sql - 有效查询,失败查看