[英]How to initialize a public static final read-only LinkedMap (bidirectionnal map)
我想創建一個
public static final LinkedMap myMap;
在某個地方,我發現了類似地圖的地圖:
public class Test {
private static final Map<Integer, String> MY_MAP = createMap();
private static Map<Integer, String> createMap() {
Map<Integer, String> result = new HashMap<Integer, String>();
result.put(1, "one");
result.put(2, "two");
return Collections.unmodifiableMap(result);
}
}
但我無法將“unmodifiableMap”方法應用於LinkedMap
。 有誰能夠幫我? 有可能嗎?
最流行的解決方法幾乎可以肯定是Guava ImmutableMap
。 (披露:我向番石榴捐款。)
Map<Integer, String> map = ImmutableMap.of(
1, "one",
2, "two");
要么
ImmutableMap<Integer, String> map = ImmutableMap
.<Integer, String> builder()
.put(1, "one")
.put(2, "two")
.build();
沒有其他庫,除了你寫的那個之外,唯一的解決方法是
static final Map<Integer, String> CONSTANT_MAP;
static {
Map<Integer, String> tmp = new LinkedHashMap<Integer, String>();
tmp.put(1, "one");
tmp.put(2, "two");
CONSTANT_MAP = Collections.unmodifiableMap(tmp);
}
聲明變量等於函數Create()對我沒有任何意義。
如果你需要一個最終變量myMap,你必須這樣寫:
// = createMap();
private final static LinkedHashMap<Integer, String>
myMap = new LinkedHashMap<Integer, String>();
static {
myMap.put(1, "one");
myMap.put(2, "Two");
};
public static void main(String[] args) {
for( String link : myMap.values()){
System.out.println("Value in myMap: "+link);
}
}
或者如果你想使用create()函數,你必須從myMap中刪除final關鍵字並在main中使用myMap:
public static void main(String[] args) {
myMap = Test.createMap();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.