[英]Better way to initialize Map in constructor in Java
我試圖在一個類中將Map初始化為零。 我這樣做是這樣的:
public class A{
private final Map<String,Integer> myMap;
public A(){
this.myMap = new HashMap<String,Integer>() {
{
put("a",0);
put("b",0);
}
};
}
}
我的問題:這是一個好的實現嗎? 這有什么問題嗎? 還是有更好的方法來實現這一目標?
Rod_Algonquin的意思是:
public class A {
private final Map<String,Integer> myMap;
public A() {
this.myMap = new HashMap<String,Integer>();
this.myMap.put("a",0);
this.myMap.put("b",0);
}
}
根據Luiggi Mendoza的評論,由於Map
被聲明為final
,因此您可能希望地圖不可修改,但final
並不能保證這一點。 這將:
public class A {
private final Map<String,Integer> myMap;
public A() {
Map<String,Integer> map = new HashMap<String,Integer>();
map.put("a",0);
map.put("b",0);
this.myMap = Collections.unmodifiableMap(map);
}
}
如果您的真正目標是創建不可變Map
,則我強烈建議使用Guava的ImmutableMap.Builder
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.