我需要确保地图内容是最终的,它一旦初始化为:
split(sep=None, maxsplit=-1)
每次调用修改地图内容的方法(如put,remove,replace ...)都会以错误结束。
但我仍然能够表演另一个:
Map<K, V> map = new HashMap<K, V>(iAnotherMap);
有没有办法实现这个目标?
由于
编辑:尝试使用Collections.unmodifiableMap方法,但是存在一个问题:
我想要包装的课程是:
map = new HashMap<K, V>(iAnotherMap);
以下代码返回错误:
public class IndexedHashMap<K, T> implements Map<K, Pair< Integer, T >>, Serializable
类型不匹配:无法转换为Map&gt;到IndexedHashMap
对此有何想法?
答案 0 :(得分:4)
final
会使您的参考最终,但地图对象仍然可以编辑。您需要使用Collections
Map<K, V> map = Collections.unmodifiableMap(new HashMap<K, V>(iAnotherMap));
或构建自己的实现
答案 1 :(得分:1)
您可以使用UnmodifiableMap。但是,如果您的需求过于具体,则应扩展现有的HashMap类并执行任何操作。
public class HashMap<K, V> extends java.util.HashMap<K, V> {
@Override
public V put(K key, V value) {
// report error
return null;
}
// similarly override other methods as you want
}
答案 2 :(得分:0)
如果您可以使用番石榴,那么您需要的是:
com.google.common.collect.ImmutableMap
否则,您需要自己实现HashMap以使其成为不可变的。