2011-11-05 76 views
0

我試圖解析包含名稱 - 值對HashMap的名稱 - 值對名稱字段...存儲在HashMap中Java的如何獲取存儲在一個HashMap

的實體是一個數值的話對應於每個單詞的值。

這是我使用的代碼:

hMap = (HashMap) untypedResult; 

/* 
    get Collection of values contained in HashMap using 
    Collection values() method of HashMap class 
*/ 
c = hMap.values(); 

//obtain an Iterator for Collection 
Iterator itr = c.iterator(); 

//iterate through HashMap values iterator 
while(itr.hasNext()) 
{ 
    resp.getWriter().println(" Value= " + itr.next()); 
    //resp.getWriter().println(" To String of iterator= " + itr.toString()); 
} 

我能夠獲得與使用上述代碼字的每個相關聯的數值。我怎樣才能獲得每個單詞的價值?

回答

4

這就是問題所在:

c = hMap.values(); 

如果你想在鍵以及,你不應該叫values()。呼叫entrySet()代替:

for (Map.Entry<String, Integer> entry : hMap.entrySet()) { 
    resp.getWriter().println("Key " + entry.getKey() 
          + "; value " + entry.getValue()); 
} 

或爲原始類型(益):

for (Object rawEntry : hMap.entrySet()) { 
    Map.Entry entry = (Map.Entry) rawEntry; 
    resp.getWriter().println("Key " + entry.getKey() 
          + "; value " + entry.getValue()); 
} 
+0

我試着用你的代碼,但對於第一行本身(for(Map.Entry ..................)我得到這個錯誤 - 類型不匹配:無法從元素類型對象轉換爲Map.Entry 。請告訴你什麼導致這個錯誤。謝謝。 – Arvind

+0

@Arvind:這可能是由於使用原始類型。編輯第二種形式......但如果可能的話,正確使用通用類型會更好。即使'HashMap '也會比'HashMap'好。 –