📅  最后修改于: 2023-12-03 15:21:30.950000             🧑  作者: Mango
在 Java 中,不可变映射是一种数据结构,它代表了一个键值对集合。不可变映射的所有操作都不会对原始对象进行更改,而是返回一个新的不可变映射对象。
不可变映射有许多优点。其中一个主要优点是不可变性。由于不可变映射不能修改,因此线程安全性得到提高。不可变映射还有一个优点是可以更好地缓存。由于它们是不可变的,因此在许多情况下可以使用相同的不可变映射对象多次。这种数据结构还可以优化空间,因为不需要为每个实例分配内存。
在 Java 中,创建不可变映射可以使用 Map.of()
或 Map.ofEntries()
方法。这些方法在 Java 9 中被引入,并在 Java 10 和 Java 11 中进行了扩展。以下是一个例子:
Map<String, Integer> immutableMap = Map.of(
"One", 1,
"Two", 2,
"Three", 3
);
这将创建一个不可变映射,其中键是字符串,值是整数。 of()
方法最多可以接受 10 个元素,但如果要添加更多元素,则可以使用 ofEntries()
方法。
Map<String, Integer> immutableMap = Map.ofEntries(
entry("One", 1),
entry("Two", 2),
entry("Three", 3),
entry("Four", 4)
);
在不可变映射中,所有常规的 Map
操作(如 put()
和 remove()
)都被禁用。不过,不可变映射仍然可以执行一些常见的任务,如获取键集合和值集合,以及遍历所有键值对。
以下是使用不可变映射的示例:
Map<String, Integer> immutableMap = Map.of(
"One", 1,
"Two", 2,
"Three", 3
);
Set<String> keys = immutableMap.keySet();
Collection<Integer> values = immutableMap.values();
for(String key : keys) {
System.out.println(key + ": " + immutableMap.get(key));
}
不可变映射是一种强大的数据结构,可以提高性能和可读性。虽然无法修改不可变映射,但是可以创建它们并使用它们来执行常见任务,如遍历、过滤和转换。如果您尚未使用 Java 9 及更高版本,则您应该考虑使用这些方法来创建不可变映射。