java 创建只读map
时间: 2023-06-13 10:02:13 浏览: 227
java制作map文件
3星 · 编辑精心推荐
在 Java 中,可以通过使用 `Collections.unmodifiableMap()` 方法来创建只读 Map。这个方法接受一个 Map 对象作为参数,并返回一个只读的 Map 对象。这个只读的 Map 对象不允许修改,任何修改操作都会抛出 `UnsupportedOperationException` 异常。
下面是一个示例代码:
```java
Map<String, Integer> map = new HashMap<>();
map.put("foo", 1);
map.put("bar", 2);
Map<String, Integer> readOnlyMap = Collections.unmodifiableMap(map);
// 尝试修改只读 Map 会抛出异常
readOnlyMap.put("baz", 3); // 抛出 UnsupportedOperationException 异常
```
需要注意的是,虽然只读 Map 不允许修改,但是它的原始 Map 对象是可以被修改的。如果原始 Map 对象被修改了,只读 Map 也会反应这些修改。因此,如果需要创建一个完全不可修改的 Map,需要在创建只读 Map 之前先将原始 Map 转换为不可修改的 Map。可以使用 `Collections.unmodifiableMap()` 方法来完成这个转换,代码如下:
```java
Map<String, Integer> map = new HashMap<>();
map.put("foo", 1);
map.put("bar", 2);
Map<String, Integer> unmodifiableMap = Collections.unmodifiableMap(new HashMap<>(map));
// 再使用 unmodifiableMap 创建只读 Map
Map<String, Integer> readOnlyMap = Collections.unmodifiableMap(unmodifiableMap);
// 尝试修改只读 Map 会抛出异常
readOnlyMap.put("baz", 3); // 抛出 UnsupportedOperationException 异常
// 修改原始 Map 不会影响只读 Map
map.put("baz", 3);
System.out.println(readOnlyMap); // 输出 {foo=1, bar=2}
```
阅读全文