2013-01-13 126 views
0

可能重複:
How do I iterate over each Entry in a Map?
How can I iterate over a map of <String, POJO>?遍歷HashMap中

我已經寫了下面的一段代碼和我被困在遍歷HashMap中。

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.Iterator; 
import java.util.List; 

class demo 
{ 
    public static void main(String v[]) { 
     ArrayList<String> contactIds = new ArrayList<String>(); 
     contactIds.add("2"); 
     contactIds.add("3"); 

     HashMap names = new HashMap(); 
     names = getNames(contactIds); 

     // I want to get the total size of the hashmap - names 
     // for ex now there are 6 elements inside hashmap. 
     // How can I get that count? 

    } 


    private static HashMap getNames(ArrayList contactIds) { 
     HashMap names = new HashMap(); 
     String params = null; 
     List<String> list = new ArrayList<String>(); 
     for(int i=0; i<contactIds.size();i++) { 
      params = contactIds.get(i).toString(); 

      list.add(0,"aer-1"); 
      list.add(1,"aer-2"); 
      list.add(2,"aer-3"); 

      names.put(params,list) ; 
     } 

     return names; 
    } 
} 

在這段代碼中,地圖中有六個元素,現在在主要方法中,我如何迭代地圖並獲得總數?

謝謝。

回答

3

看看JavaDoc。您正在尋找總計數的HashMap.size()和地圖中所有值的HashMap.values(),或者爲每對密鑰和值尋找HashMap.entries()

5

你的問題是問 - 回答 - 在這裏:

How to efficiently iterate over each Entry in a Map?

for (Map.Entry<String, String> entry : map.entrySet()) { 
    System.out.println(entry.getKey() + "/" + entry.getValue()); 
} 
+0

但是我怎樣才能得到hashmap中元素的總數。 例如,爲鍵1和鍵2添加了3個元素。 現在我希望總大小爲6。可能嗎 ? – nithin

1

的 '地圖' 數據結構是不是一個集合對象,而是集是。

迭代Map的最常見方法是使用底層的.entrySet方法。

// For each loop 
for (Entry<String, String> entry : names) { 
    System.out.println(String.format("(%s, %s)", entry.getKey(), entry.getValue())); 
} 

// Iterator 
Iterator iterator = names.entrySet().iterator 
while(iterator.hasNext()){ 
    Entry entry = iterator.next() 
    System.out.println(String.format("(%s, %s)", entry.getKey(), entry.getValue())); 
} 

如果有興趣查找Map節點的總數,請使用.size()方法。

編輯:

既然你要存儲在地圖中的每個表的總規模,你可以做這樣的事情。

Iterator iterator = names.entrySet().iterator 
int count = 0; 

while(iterator.hasNext()){ 
    Entry entry = iterator.next() 
    count += entry.getValue().size() 
} 
+0

但我怎麼能得到hashmap內的元素的總數。例如,爲鍵1和鍵2添加了3個元素。現在我想要總大小,即6。可能嗎 ? – nithin

+0

沒有名爲size()的方法 – nithin

+0

您在地圖中使用什麼數據結構?在你的代碼中,它看起來像一個ArrayList,它是一個集合數據結構,所以它應該有一個.size()方法。 – Dan