我在Java中的新手(通過JavaScript來在Adobe的LiveCycle開發),並面臨着以下問題:它把錯誤的空值從字符串數組中的HashMap
我有幾個項目的String數組。我只想把值爲「a」的項放到HashMap中。但是,在HashMap中我不是3個「a」值,而是在那裏得到1個空值。這是爲什麼?
String[] s = {"a", "a", "b", "a"};
Map m = new HashMap();
for (int i = 0; i < s.length; i++) {
if (s[i].equals("a")) {
m.put(i, s[i]);
}
}
for (int i = 0; i < m.size(); i++) {
System.out.println(m.get(i));
}
// Prints
//a
//a
//null
訪問你有一個'地圖< Integer,String>'其中key是數組中字符串的索引。你不應該從0迭代到地圖大小,而是在地圖的實際條目上進行迭代。使用'for(Integer key:map.keySet())' –
您將這些項目與其對應的索引放在'Map'中,即您有一個'Map',其內容爲{0 = a,1 = a,3 =一}'。因此,如果您嘗試使用'm.get(...)'中的'2'來訪問地圖,那麼您會得到一個'null',因爲在地圖中找不到鍵'2'。在旁註中:您正在使用原始類型。你應該正確地綁定'Map'和'HashMap'的類型:Map m = new HashMap ();' –
Turing85
'm.get(i)'返回key 'i'。那裏你沒有像數組一樣的索引 – Jens