2014-02-25 75 views
6

比如我有此HashMap:快速的方式來所有字母加載到一個HashMap

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

而不是做map.put("A",0)map.put("B",0) ...直到map.put("C",0),有什麼辦法可以讓它快?

+1

你是什麼意思**讓它快**?性能明智嗎? – Sanjeev

+0

爲什麼?使用map.put(「A」,0)'有什麼問題? –

+0

爲什麼'字符串'而不是'字符'作爲地圖鍵? – fge

回答

13

做在for循環

for (char ch = 'A'; ch <= 'Z'; ++ch) 
    map.put(String.valueOf(ch), 0); 
1

試試這個:

Map<String,Integer> map = new HashMap<>(); 
for (int i = 65; i <= 90; i++) { 
     map.put(Character.toString((char) i), 0); 
} 
+0

ASCII代碼(65和90)是相當不可讀的(幻數);更好地使用char:for(char i ='A'; i <='Z'; ++ i)等 –

+0

是的,你是對的;)這僅僅是一個例子。 – Samoth

+0

@DmitryBychenko可以在這種情況下詳細說明或給出一個鏈接,指出你的意思是幻數? –

3

使用雙括號初始化。它非常緊湊並且有助於初始化集合。

Map<String, Integer> map = new HashMap<String, Integer>() { 
     { 
      for (char ch = 'A'; ch <= 'Z'; ++ch) 
       put(String.valueOf(ch), 0); 
     } 
}; 

請注意 - put方法在沒有地圖引用的情況下調用。

相關問題