我有这门课,我想知道:
1°这是定义静态HashMasp的最佳方法
2°这是在基于Spring的应用程序中执行此操作的最佳方式吗?(Spring提供了更好的方法吗?)
提前致谢!
public class MyHashMap {
private static final Map<Integer, String> myMap;
static {
Map<CustomEnum, String> aMap = new HashMap<CustomEnum, String>();
aMap.put(CustomEnum.UN, "one");
aMap.put(CustomEnum.DEUX, "two");
myMap = Collections.unmodifiableMap(aMap);
}
public static String getValue(CustomEnum id){
return myMap.get(id);
}
}
System.out.println(MyHashMap.getValue(CustomEnum.UN));
答案 0 :(得分:2)
有几种方法可以做到这一点。例如,如果您的地图是不可变的,您可以考虑使用Google Guava libraries 它有一个ImmutableMap类,可以用来构建你的地图: -
static final ImmutableMap<String, Integer> WORD_TO_INT =
new ImmutableMap.Builder<String, Integer>()
.put("one", 1)
.put("two", 2)
.put("three", 3)
.build();
如果您已经在使用Spring Framework并使用XML连接bean,那么您可以通过XML直接填充地图: -
...
<!-- creates a java.util.Map instance with the supplied key-value pairs -->
<util:map id="emails">
<entry key="pechorin" value="pechorin@hero.org"/>
<entry key="raskolnikov" value="raskolnikov@slums.org"/>
<entry key="stavrogin" value="stavrogin@gov.org"/>
<entry key="porfiry" value="porfiry@gov.org"/>
</util:map>
...
答案 1 :(得分:1)
要么你可以使用Guava库。但是如果你不想使用第三方库,那么有两种方法可以做到:
静态初始化程序
private static final Map<String,String> myMap = new HashMap<String, String>();
static {
myMap.put(key1, value1);
myMap.put(key2, value2);
}
public static Map getMap() {
return Collections.unmodifiableMap(myMap);
}
实例初始化(匿名子类)。
private static final Map<String,String> myMap = new HashMap<String, String>()
{
{
put(key1, value1);
put(key2, value2);
}
};
public static Map getMap() {
return Collections.unmodifiableMap(myMap);
}
private static void addPair(String key, String val){
// Add key val to map
}
假设您稍后要添加一些常量来映射,那么您也可以这样做。
Collections.unmodifiableMap :有一个不可修改的地图视图,无法修改。因为它给出了不支持的异常,如果对map进行了任何修改。