Mar*_*les 3 java spring hashmap
我有这门课,我想知道:
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));
Run Code Online (Sandbox Code Playgroud)
小智 5
有几种方法可以做到这一点。例如,如果您的地图是不可变的,您可以考虑使用Google Guava 库 它有一个 ImmutableMap 类,可用于将您的地图构造为:-
static final ImmutableMap<String, Integer> WORD_TO_INT =
new ImmutableMap.Builder<String, Integer>()
.put("one", 1)
.put("two", 2)
.put("three", 3)
.build();
Run Code Online (Sandbox Code Playgroud)
如果您已经在使用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>
...
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以使用 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);
}
Run Code Online (Sandbox Code Playgroud)实例初始化程序(匿名子类)。
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
}
Run Code Online (Sandbox Code Playgroud)假设稍后您想向映射添加一些常量,那么您也可以这样做。
Collections.unmodifyingMap:它有助于拥有不可修改的地图视图,该视图无法修改。因为如果对地图进行任何修改,它会给出不支持的异常。
| 归档时间: |
|
| 查看次数: |
15322 次 |
| 最近记录: |