Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit ddeb7a7

Browse files
初始化final静态map
1 parent e69a028 commit ddeb7a7

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
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

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /