File tree 1 file changed +72
-0
lines changed
1 file changed +72
-0
lines changed Original file line number Diff line number Diff line change
1
+ # 初始化静态map #
2
+
3
+ ## 问题 ##
4
+
5
+ 怎么在Java中初始化一个静态的map
6
+
7
+ ** 方法一** :静态初始化器
8
+
9
+ ** 方法二** :实例初始化(匿名子类)
10
+
11
+ 下面是描述上面两种方法的例子
12
+
13
+ import java.util.HashMap;
14
+ import java.util.Map;
15
+ public class Test{
16
+ private static final Map<Integer, String> myMap = new HashMap<Integer, String>();
17
+ static {
18
+ myMap.put(1, "one");
19
+ myMap.put(2, "two");
20
+ }
21
+
22
+ private static final Map<Integer, String> myMap2 = new HashMap<Integer, String>(){
23
+ {
24
+ put(1, "one");
25
+ put(2, "two");
26
+ }
27
+ };
28
+ }
29
+
30
+ ## 答案 ##
31
+
32
+ ### 答案1 ###
33
+
34
+ 匿名子类初始化器是java的语法糖,我搞不明白为什么匿名类来初始化,而且如果create的类是final的话,它将不起作用
35
+
36
+ 我创建固定大小图的时候使用static初始化器
37
+
38
+ public class Test{
39
+ private static final Map<Integer, String> myMap;
40
+ static{
41
+ Map<Integer, String> aMap = ...;
42
+ aMap.put(1,"one");
43
+ aMap.put(2,"two");
44
+ myMap = Collections.unmodifiableMap(aMap);
45
+ }
46
+ }
47
+
48
+
49
+ ### 答案2 ###
50
+
51
+ 我喜欢用Guava(是 Collection 框架的增强和扩张)的方法初始化一个静态的,不可改变的map
52
+
53
+ static fianl Map<Integer, String> myMap = ImmutablMap.of(
54
+ 1,"one",
55
+ 2, "two"
56
+ )
57
+ ·
58
+ 当你的图entry的个数超过5个时候你就不能使用` ImmutableMap.of ` 可以试试` ImmutableMap.bulider() `
59
+
60
+ static fianl Map<Integer, String> myMap = ImmutableMap.<Integer, String>builder()
61
+ {
62
+ .put(1, "one")
63
+ .put(2, "two")
64
+
65
+ .put(15, "fifteen")
66
+ .build();
67
+ }
68
+
69
+
70
+ # 原文链接 #
71
+
72
+ http://stackoverflow.com/questions/507602/how-can-i-initialize-a-static-map
You can’t perform that action at this time.
0 commit comments