Java遍历Map的四种方法及对比
class="java">package cn.sf.util; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.Set; public class TestMap { /** * 方法一 在for-each循环中使用entries来遍历 * 这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用 */ public void testMap1(){ Map<String, String> map = new HashMap<String, String>(); map.put("map1", "1"); map.put("map2", "2"); map.put("map3", "3"); Set<String> keys = map.keySet(); for (String key : keys) { System.out.println(key+"---"+map.get(key)); } } /** * 方法一 :如果只需要map中的键或者值,你可以通过keySet或values来实现遍历 * 比entrySet性能 */ public void testMap2(){ Map<String, String> map = new HashMap<String, String>(); map.put("map1", "1"); map.put("map2", "2"); map.put("map3", "3"); Set<String> keys = map.keySet(); for (String key : keys) { System.out.println("key:"+map.get(key)); } for (String value : map.values()) { System.out.println("value:"+value); } } /** * 方法三:使用Iterators */ public void testMap3(){ Map<String, String> map = new HashMap<String, String>(); map.put("map1", "1"); map.put("map2", "2"); map.put("map3", "3"); Iterator<Entry<String, String>> iterators = map.entrySet().iterator(); while(iterators.hasNext()){ Entry<String, String> entry = iterators.next(); System.out.println(entry.getKey()+"---"+entry.getValue()); } } /** * 方法四 :通过键找值遍历(效率低) */ public void testMap4(){ Map<String, String> map = new HashMap<String, String>(); map.put("map1", "1"); map.put("map2", "2"); map.put("map3", "3"); for (Map.Entry<String, String> entry : map.entrySet()) { System.out.println(entry.getKey()+"--"+entry.getValue()); } } public static void main(String[] args) { TestMap testMap = new TestMap(); testMap.testMap1(); System.out.println(); testMap.testMap2(); System.out.println(); testMap.testMap3(); System.out.println(); testMap.testMap4(); } }
?