標籤:java pointer method exce str 最可 keyset for get
以下方法適用於任何map實現(HashMap, TreeMap, LinkedHashMap, Hashtable, 等等):
方式一(推薦):
1 // 推薦 2 // 在for-each迴圈中使用entries來遍曆 3 // 注意:for-each迴圈在Java 5中被引入所以該方法只能應用於java 5或更高的版本中。 4 // 如果你遍曆的是一個空的map對象,for-each迴圈將拋出NullPointerException,因此在遍曆前你總是應該檢查Null 參考。 5 private static void testMethod1(Map<Integer, String> map) { 6 7 // 這是最常見的並且在大多數情況下也是最可取的遍曆方式。在索引值都需要時使用。 8 for (Map.Entry<Integer, String> entry : map.entrySet()) { 9 System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());10 }11 12 }
方式二:
1 // 方法二 在for-each迴圈中遍曆keys或values。 2 // 如果只需要map中的鍵或者值,你可以通過keySet或values來實現遍曆,而不是用entrySet。 3 // 該方法比entrySet遍曆在效能上稍好(快了10%),而且代碼更加乾淨。 4 private static void testMethod2(Map<Integer, String> map) { 5 6 // 遍曆map中的鍵 7 for (Integer key : map.keySet()) { 8 9 System.out.println("Key = " + key);10 11 }12 13 // 遍曆map中的值14 for (String value : map.values()) {15 16 System.out.println("Value = " + value);17 18 }19 20 }
方式三:
1 // 方法三使用Iterator遍曆 2 // 本方式有兩個好處,一是在老版本java中這是惟一遍曆map的方式。另一個好處是,你可以在遍曆時調用iterator.remove()來刪除entries,另兩個方法則不能。 3 private static void testMethod3(Map<Integer, String> map) { 4 5 Iterator<Map.Entry<Integer, String>> entries = map.entrySet().iterator(); 6 7 while (entries.hasNext()) { 8 9 Map.Entry<Integer, String> entry = entries.next();10 11 System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());12 13 }14 }
方式四:
1 // 方法四、通過鍵找值遍曆(效率低) 2 // 相當慢且無效率 3 private static void testMethod4(Map<Integer, String> map) { 4 5 for (Integer key : map.keySet()) { 6 7 String value = map.get(key); 8 9 System.out.println("Key = " + key + ", Value = " + value);10 11 }12 }
Java中遍曆Map的常用方法