【转】HashMap遍历方法

网上搜了一下 hashMap 遍历的文章

转来收藏。

 

第一篇http://blog.csdn.net/gaoge19861207/article/details/5455518

在做周末作业时,发现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中,所以快了。

我验证了一下,两种遍历的遍历时间相差还是很明显的,有兴趣的同学可以直接把代码粘过去试下,另外运用时间来比较程序运行效率的方法也很值得学习,也很简单。

 

第二篇http://thgenius.blog.51cto.com/blog/1042803/749517

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) {
    Map<String, Integer> tempMap = new HashMap<String, Integer>(); 
    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<String, Integer> 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 <String, ArrayList> map = new HashMap<String, ArrayList>();     System.out.println("java 遍历Map <String, ArrayList> map = new HashMap <String, ArrayList>();");     Map<String, ArrayList> map = new HashMap<String, ArrayList>();     Set<String> keys = map.keySet();     Iterator<String> 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<String, List> mapList = new HashMap<String, List>();     for (Map.Entry entry : mapList.entrySet()) {       String key = entry.getKey().toString();       List<String> values = (List) entry.getValue();       for (String value : values) {       System.out.println(key + " --> " + value);     }   } }

 

 

转载于:https://www.cnblogs.com/szfei/archive/2012/08/08/2628208.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值