可能重复:
How do I iterate over each Entry in a Map?
How can I iterate over a map of <String, POJO>?
我已经编写了以下代码,并且仍在继续迭代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;
}
}
在此代码中,地图中有六个元素,现在在主方法中,我如何迭代地图并获得总数?
谢谢。
答案 0 :(得分:6)
你问的问题 - 并在这里回答:
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());
}
答案 1 :(得分:3)
看看JavaDoc。您需要HashMap.size()
表示总计数,HashMap.values()
表示地图中的所有值,或HashMap.entries()
表示每对键和值。
答案 2 :(得分:1)
“Map”数据结构不是Collection对象,而是Sets。
迭代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()
}