有没有写在键值对java的静态最终Hashtable的,就像你可以方便地初始化为一个字符串数组的方式:写一个初始化的静态哈希表优雅
String [] foo = {"A","AB"};
基本上我的意思是没有为关键字:值对写上“put”字样,而是可能类似于:
Hashtable<String, String> foo = {"JJ":"222","KK":"222"}
其中IMO看起来更优雅。
(我知道初始化将需要在静态块。我离开了这一点现在)
有没有写在键值对java的静态最终Hashtable的,就像你可以方便地初始化为一个字符串数组的方式:写一个初始化的静态哈希表优雅
String [] foo = {"A","AB"};
基本上我的意思是没有为关键字:值对写上“put”字样,而是可能类似于:
Hashtable<String, String> foo = {"JJ":"222","KK":"222"}
其中IMO看起来更优雅。
(我知道初始化将需要在静态块。我离开了这一点现在)
没有,Java没有地图的文字,但它确实有数组常量。
static final Map<String, String> map;
static {
map = new HashMap<String, String>();
String[][] pairs = {
{"foo", "bar"},
{"x", "y"}
};
for (String[] pair : pairs) {
map.put(pair[0], pair[1]);
}
}
当然,这并没有真正添加任何直白复制和粘贴put
的解决方案,如果你的关键和值类型是不一样的它不能很好地工作。
不,你正在寻找的东西,如C#的collection initializers,其目前不存在的Java 。
您可以使用匿名类来保存一些输入内容,但仍然需要编写put
。
您可以使用番石榴的ImmutableMap:
map = ImmutableMap.of(key1, value1, key2, value2);
匿名内部类可以给你双括号初始化,这在某些情况下非常有用:
static final Map<String, String> map = new HashMap<String, String>() {{
put("foo", "bar");
put("x", "y");
}};
在任何情况下,@ michael667的回答可能是最好的
首选解决方案:将最初的代码移动到静态变量的正下方。无论你使用源代码自动格式化(排序成员)。只使用纯粹的标准Java库。 –
+1佳源:d – 2011-10-15 05:48:26