如何在java中多次避免hashmap中的加载模式

时间:2014-05-05 18:40:27

标签: java hashmap

我有一个类可以完成一些模式匹配人员。 我使用:

将模式存储在hashmap中
private static HashMap<String, String> map = new HashMap<String, String>();  
static {  
    map.put("A", "aba");  
}

此地图旨在为后者提供地图或字典。 我的问题是,有没有比使用&#34;静态&#34;更好的方法?当我创建一个实例时,我不必多次在hashmap中创建模式?

谢谢!

2 个答案:

答案 0 :(得分:2)

第一次加载类时,静态初始值设定项只运行一次。您的静态地图将由您班级的所有实例共享。

如果不同的实例将从不同的线程编辑地图,请小心线程安全。

答案 1 :(得分:1)

当使用静态成员变量时,每次实例化周围类的实例时都不会实例化它们,它们只会在第一次加载类时实例化一次。

在您的情况下,假设您的Map永远不会更改,那么最好将其标记为final,以确保它永远不会更改,并将其包装在unmodifiableMap中以确保它不能被修改

例如:

private static final HashMap<String, String> map;  
static {
    HashMap<String, String> tmpMap = new HashMap<String, String>()
    tmpMap.put("A", "aba");
    map = Collections.unmodifiableMap(tmpMap);
}