2014-01-17 36 views
2

有沒有更簡單的方法來做到這一點?在Java中以更簡潔的方式實例化地圖

Map<String, Integer> values = new HashMap<String, Integer>(); 
values.put("A", 1); 
values.put("E", 1); 
values.put("D", 2); 
values.put("R", 2); 
values.put("B", 3); 
values.put("M", 3); 
values.put("V", 4); 
values.put("Y", 4); 
values.put("J", 8); 
values.put("X", 8); 

隨着Java數組可以例如

int[] temp = {1,2}; 

代替

​​

我期待與上面的地圖類似的東西做到這一點。 這可能嗎?

感謝您的幫助一如既往:)

+0

你看過HashMap中存在的方法嗎?如果你使用eclipse,ctrl + space會給你你的答案。 – TheLostMind

+0

我不知道在HashMap API中尋找什麼。你能把我指向正確的方向嗎? 和我沒有使用eclipse @TheLostMind – herteladrian

+0

好..如果你看看HashMap API,你不會找到任何方法可以幫助你..我會看看彼得的答案...如果需要使用循環... – TheLostMind

回答

2

沒有,有這樣做的直接方式。

您需要按照您的建議初始化地圖。

Map<String, Integer> values = new HashMap<String, Integer>(); 
values.put("A", 1); 
values.put("E", 1); 
values.put("D", 2); 
values.put("R", 2); 
values.put("B", 3); 
values.put("M", 3); 
values.put("V", 4); 
values.put("Y", 4); 
values.put("J", 8); 
values.put("X", 8); 

如果有這些值的任何模式,您可以簡化使用一個循環。

另一種方法是使用HashMapBuilder。

另請參見此處。

How to directly initialize a HashMap (in a literal way)?

另一種替代方法是使用Guava。他們有一個這樣的方法。

4

你可以試試這個,但你必須要小心:

HashMap<String, Integer> values = new HashMap<String, Integer>() 
{ 
    { 
     put("A", 1); 
     put("E", 1); 
     put("D", 2); 
     put("R", 2); 
     put("B", 3); 
     put("M", 3); 
     put("V", 4); 
     put("Y", 4); 
     put("J", 8); 
     put("X", 8); 
    } 
}; 

瞭解更多關於Double Brace Initialization here

+1

這就是我在C/C++ –

3

有使用Java而已,但如果你使用Guava,你可以這樣做沒有更簡單的方法:

Map<String, Integer> values = 
    ImmutableMap.<String, Integer> builder().put("A", 1).put("E", 1).put("D", 2).build(); 

參見:

1

如果您認爲你知道鍵和值的組合,你可以這樣做,但它是一種破解:

String[] keys = {"A", "B", "C"}; 
int[] values = {1, 2, 3}; 

Map<String, Integer> myMap = new HashMap<String, Integer>(); 

for(int i = 0; i < keys.length; i++){ 
    myMap.put(keys[i], values[i]); 
} 

但是你必須非常小心,最重要的是你的數組應該有相同的長度。

+0

中做的事情請檢查你的代碼。它沒有錯誤嗎? –

+0

@Qadir是的我糾正了它,謝謝指出 – Abubakkar

相關問題