map的4中遍历方式

用了map那么久,最常用的当然是最直接的put和get方法,今天总结一下map的便利。

map的便利有4种,我们依次来看。

第一种
这是最常见的用法,这种用法可以同时拿到key和value值。 缺点:如果map是空,将会出现空指针异常,那么每次在对map遍历以前,就要先进行判空

public static void forEachMap(Map<String,String> map) {         
    for ( Map.Entry<String,String> entry : map.entrySet()) {    
        System.out.println(entry.getKey()+entry.getValue());    
    }                                                           
}                                                               

下来看看第二种遍历方法
这种方法是只遍历key或者value。这种方法比第一种方法的效率略微有提升,而且代码也能简洁一点。同样,这种方法也需要判断map是否为空。

 public static void forEachMap2(Map<String,String> map){     
     for (String str :map.keySet()){                         
         System.out.println(str);                            
     }                                                       
     for (String str :map.values()){                         
         System.out.println(str);                            
     }                                                       
 }                                                           

第三种方法是使用迭代器的方式

  /**                                                                           
   * 使用迭代器                                                                      
   *                                                                            
   * @param map                                                                 
   */                                                                           
  public static void forEachMap3(Map<String, String> map) {                     
      Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator(); 

      while (iterator.hasNext()) {                                              
          Map.Entry<String, String> entry = iterator.next();                    
          System.out.println(entry.getKey() + entry.getValue());                
      }                                                                         
  }                                                                             

  /**                                                                           
   * 使用迭代器但是不适用泛型                                                               
   *                                                                            
   * @param map                                                                 
   */                                                                           
  public static void forEachMap4(Map<String, String> map) {                     
      Iterator iterator = map.entrySet().iterator();                            
      while (iterator.hasNext()){                                               
          Map.Entry entry= (Map.Entry) iterator.next();   
          //这里的类型转换的原因是,如果不加String,那么背默认为两个object,不能相加                      
          System.out.println((String)entry.getKey() + entry.getValue());        
      }                                                                         

  }                                                                             

这两种方式没有什么大的区别,只是在泛型上有个区别。

第四种是先拿到map的key值,再拿取value值。
这种方式效率比较低,一般不推荐使用

for (Integer key : map.keySet()) {  

    Integer value = map.get(key);  

    System.out.println("Key = " + key + ", Value = " + value);  

} 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值