Iterating over hashmap
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
How do I iterate over each Entry in a Map?
How can I iterate over a map of?
我已经编写了以下代码,并且一直在迭代哈希图。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 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; } } |
在这段代码中,映射中有六个元素,现在在主方法中,我如何迭代映射并获取总计数?
谢谢您。
你的问题在这里被询问和回答:
如何有效地迭代地图中的每个条目?
1 2 3 |
看看JavaDoc。您要查找的是
"map"数据结构不是集合对象,但集合是。
在映射上迭代的最常见方法是使用底层的.entryset方法。
1 2 3 4 5 6 7 8 9 10 11 | // 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() ) ); } |
如果要查找映射节点的总数,请使用.size()方法。
编辑:
因为您希望每个列表的总大小存储在地图中,所以可以这样做。
1 2 3 4 5 6 7 | Iterator iterator = names.entrySet().iterator int count = 0; while( iterator.hasNext() ){ Entry entry = iterator.next() count += entry.getValue().size() } |