本次练习涉及到:
- 初始化一个static 的常量Map
- 设置Map为不可修改
- UnsupportedOperationException 异常
- Map的复制
package Collection;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
public class CreateMap {
private static Map<String,String> map;
static {
// 按照存入顺序的Map
map = new LinkedHashMap();
map.put("key1", "value1");
map.put("key3", "value3");
map.put("key2", "value2");
}
public static void main(String[] args) {
CreateMap cm = new CreateMap();
cm.map.put("test", "test");
// java中提供了很多方法都可以实现对一个Map的复制,但是那些方法不见得会时时同步。
// 简单说,就是一个Map发生的变化,而复制的那个依然保持原样。下面是一个比较高效的实现方法
Map<String,String> copiedMap = Collections.synchronizedMap(map);
cm.setUnmodifiable();
copiedMap.put("test2", "test2");//不会报错
cm.map.put("test2", "test2");//报错
}
public void setUnmodifiable(){
// 进制修改,修改会抛出UnsupportedOperationException异常来禁止修改。
this.map = Collections.unmodifiableMap(map);
}
}