Java中如何遍歷Map物件的4種方法
導讀 | 在java中遍歷Map有不少的方法。我們看一下最常用的方法及其優缺點。既然java中的所有map都實現了Map介面,以下方法適用於任何map實現(HashMap, TreeMap, LinkedHashMap, Hashtable, 等等)。 |
這是最常見的並且在大多數情況下也是最可取的遍歷方式。在鍵值都需要時使用。
Mapmap = new HashMap(); for (Map.Entryentry : map.entrySet()) { System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); }
注意:for-each迴圈在java 5中被引入所以該方法只能應用於java 5或更高的版本中。如果你遍歷的是一個空的map物件,for-each迴圈將丟擲NullPointerException,因此在遍歷前你總是應該檢查空引用。
如果只需要map中的鍵或者值,你可以透過keySet或values來實現遍歷,而不是用entrySet。
Mapmap = new HashMap(); //遍歷map中的鍵 for (Integer key : map.keySet()) { System.out.println("Key = " + key); } //遍歷map中的值 for (Integer value : map.values()) { System.out.println("Value = " + value); }
該方法比entrySet遍歷在效能上稍好(快了10%),而且程式碼更加乾淨。
使用泛型:
Mapmap = new HashMap(); Iterator<1map.entry> entries = map.entrySet().iterator(); while (entries.hasNext()) { Map.Entryentry = entries.next(); System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); }
不使用泛型:
Map map = new HashMap(); Iterator entries = map.entrySet().iterator(); while (entries.hasNext()) { Map.Entry entry = (Map.Entry) entries.next(); Integer key = (Integer)entry.getKey(); Integer value = (Integer)entry.getValue(); System.out.println("Key = " + key + ", Value = " + value); }
你也可以在keySet和values上應用同樣的方法。
該種方式看起來冗餘卻有其優點所在。首先,在老版本java中這是惟一遍歷map的方式。另一個好處是,你可以在遍歷時呼叫iterator.remove()來刪除entries,另兩個方法則不能。根據javadoc的說明,如果在for-each遍歷中嘗試使用此方法,結果是不可預測的。從效能方面看,該方法類同於for-each遍歷(即方法二)的效能。
Mapmap = new HashMap(); for (Integer key : map.keySet()) { Integer value = map.get(key); System.out.println("Key = " + key + ", Value = " + value); }
作為方法一的替代,這個程式碼看上去更加乾淨;但實際上它相當慢且無效率。因為從鍵取值是耗時的操作(與方法一相比,在不同的Map實現中該方法慢了20%~200%)。如果你安裝了FindBugs,它會做出檢查並警告你關於哪些是低效率的遍歷。所以儘量避免使用。
如果僅需要鍵(keys)或值(values)使用方法二。如果你使用的語言版本低於java 5,或是打算在遍歷時刪除entries,必須使用方法三。否則使用方法一(鍵值都要)。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2794310/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Java中遍歷Map物件的4種方法】Java物件
- java中遍歷Map的4種方法Java
- 如何遍歷Map中的物件物件
- Java遍歷Map物件的四種方式Java物件
- Java中Map的遍歷方法Java
- java 遍歷map 方法 集合 五種的方法Java
- java中遍歷map的集中方法Java
- Java中遍歷Map的兩種方法:keySet和entrySetJava
- Java遍歷Map集合的方法Java
- vue遍歷map物件Vue物件
- React中兩種遍歷資料的方法(map、forEach)React
- JS遍歷物件的幾種方法JS物件
- java Map Set遍歷Java
- 影片直播系統原始碼,java中Map遍歷的三種方式原始碼Java
- 遍歷物件鍵值對的兩種方法物件
- JavaScript中遍歷的幾種方法JavaScript
- java Map遍歷最優Java
- Java 中九種 Map 的遍歷方式,你一般用的是哪種呢?Java
- jquery中each的三種遍歷方法jQuery
- java8 對list集合中的物件遍歷,重新賦值兩種方法,遍歷某個屬性返回陣列Java物件賦值陣列
- js的map遍歷和array遍歷JS
- JS中陣列的遍歷方法(3種)JS陣列
- JavaScript中的12種迴圈遍歷方法JavaScript
- 在PHP中陣列遍歷的三種方法PHP陣列
- JS中陣列與物件的遍歷方法例項JS陣列物件
- OC中陣列、字典的遍歷的三種方法陣列
- JavaScript遍歷物件方法總結JavaScript物件
- 遍歷陣列的幾種方法陣列
- 如何遍歷物件直接量中的各個屬性物件
- java陣列遍歷的方法Java陣列
- JS遍歷物件屬性的7種方式JS物件
- 集合框架-Map集合的遍歷框架
- Java Map遍歷方式方式及效能測試Java
- JavaScript 的 4 種陣列遍歷方法: for VS forEach() VS for/in VS for/ofJavaScript陣列
- 遍歷陣列的常用方法forEach,filter,map等陣列Filter
- 26_map遍歷.goGo
- ios 遍歷陣列的八種方法iOS陣列
- JS 物件的遍歷JS物件