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);  

} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章