ImmutableDictionary
Jihongchang(讨论 | 贡献)2025年11月27日 (四) 03:08的版本 (建立内容为“ImmutableDictionary.java<syntaxhighlight lang="java"> import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Set; /** *…”的新页面)
ImmutableDictionary.java
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* 一个在初始化后就不可变的字典类。
* 外部代码无法添加,修改或删除其内容
* @param <K>
* @param <V>
*/
public class ImmutableDictionary<K, V> {
// 使用 final 修饰,确保引用不会被改变
private final Map<K, V> internalMap;
/**
* 构造函数,接收一个初始化的键值对映射。
* @param internalMap 用于初始化的 Map
*/
public ImmutableDictionary(Map<K, V> internalMap) {
// 1. 创建一个新的 HashMap,避免外部修改传入的 initialMap
// 2. 使用 Collections.unmodifiableMap 包装它,确保内部也无法修改
this.internalMap = Collections.unmodifiableMap(new HashMap<>(internalMap));
}
/**
* 获取指定键的值。
* @param key 值
* @return 对应的值,如果不存在则返回 null
*/
public V get(Object key) {
return internalMap.get(key);
}
/**
* 检查是否包含指定的键。
* @param key
* @return 如果包含则返回 true,否则返回 false
*/
public boolean containsKey(Object key) {
return internalMap.containsKey(key);
}
/**
* 获取所有键的集合。
* @return 一个不可修改的键的集合
*/
public Set<K> keySet() {
return internalMap.keySet();
}
/**
* 返回字典的大小。
* @return 键值对的数量
*/
public int size() {
return internalMap.size();
}
/**
* 检查字典是否为空
* @return 如果为空则返回 true
*/
public boolean isEmpty() {
return internalMap.isEmpty();
}
}