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();
}
}
?