网上搜了一下 hashMap 遍历的文章
转来收藏。
第一篇:
在做周末作业时,发现hashmap的遍历掌握的不是很好,到网上查了下资料,下面是转载的一篇文章,稍加整理了下。
HashMap遍历的两种方式:第一种: 效率高,推荐使用此种方式!
Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); Object key = entry.getKey(); Object val = entry.getValue(); }
第二种:效率低比第一种要低,不推荐使用!
Map map = new HashMap(); Iterator iter = map.keySet().iterator(); while (iter.hasNext()) { Object key = iter.next(); Object val = map.get(key); }
下面是一个实例,通过运行的毫秒数可以看出两种方法遍历速度的快慢
public class HashMapTest { public static void main(String[] args) { HashMap hashmap = new HashMap(); for (int i = 0; i < 1000; i++ ){ hashmap.put(i, "thanks"); } long bs = Calendar.getInstance().getTimeInMillis(); Iterator iterator = hashmap.keySet().iterator(); while (iterator.hasNext()){ System.out.print(hashmap.get(iterator.next())); } System.out.println(); System.out.println(Calendar.getInstance().getTimeInMillis() - bs); listHashMap(); } public static void listHashMap(){ java.util.HashMap hashmap = new java.util.HashMap(); for (int i = 0; i < 1000; i++ ){ hashmap.put(i, "thanks"); } long bs = Calendar.getInstance().getTimeInMillis(); java.util.Iterator it = hashmap.entrySet().iterator(); while (it.hasNext()){ java.util.Map.Entry entry = (java.util.Map.Entry) it.next(); // entry.getKey() 返回与此项对应的键 // entry.getValue() 返回与此项对应的值 System.out.print(entry.getValue()); } System.out.println(); System.out.println(Calendar.getInstance().getTimeInMillis() - bs); } }
对于keySet其实是遍历了2次,一次是转为iterator,一次就是从hashmap中取出key所对于的value。而entryset只是遍历 了第一次,他把key和value都放到了entry中,所以快了。
我验证了一下,两种遍历的遍历时间相差还是很明显的,有兴趣的同学可以直接把代码粘过去试下,另外运用时间来比较程序运行效率的方法也很值得学习,也很简单。
第二篇:
import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; //循环遍历map的方法 public class CircleMap { public static void main(String[] args) { MaptempMap = new HashMap (); tempMap.put("a", 1); tempMap.put("b", 2); tempMap.put("c", 3); // JDK1.4中 // 遍历方法一 hashmap entrySet() 遍历 System.out.println("方法一"); Iterator it = tempMap.entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = (Map.Entry) it.next(); Object key = entry.getKey(); Object value = entry.getValue(); System.out.println("key=" + key + " value=" + value); } System.out.println(""); // JDK1.5中,应用新特性For-Each循环 // 遍历方法二 System.out.println("方法二"); for (Map.Entry entry : tempMap.entrySet()) { String key = entry.getKey().toString(); String value = entry.getValue().toString(); System.out.println("key=" + key + " value=" + value); } System.out.println(""); // 遍历方法三 hashmap keySet() 遍历 System.out.println("方法三"); for (Iterator i = tempMap.keySet().iterator(); i.hasNext();) { Object obj = i.next(); System.out.println(obj);// 循环输出key System.out.println("key=" + obj + " value=" + tempMap.get(obj)); } for (Iterator i = tempMap.values().iterator(); i.hasNext();) { Object obj = i.next(); System.out.println(obj);// 循环输出value } System.out.println(""); // 遍历方法四 treemap keySet()遍历 System.out.println("方法四"); for (Object o : tempMap.keySet()) { System.out.println("key=" + o + " value=" + tempMap.get(o)); } System.out.println("11111"); // java如何遍历Map map = new HashMap (); System.out.println("java 遍历Map map = new HashMap ();"); Map map = new HashMap (); Set keys = map.keySet(); Iterator iterator = keys.iterator(); while (iterator.hasNext()) { String key = iterator.next(); ArrayList arrayList = map.get(key); for (Object o : arrayList) { System.out.println(o + "遍历过程"); } } System.out.println("2222"); Map mapList = new HashMap (); for (Map.Entry entry : mapList.entrySet()) { String key = entry.getKey().toString(); List values = (List) entry.getValue(); for (String value : values) { System.out.println(key + " --> " + value); } } }