HashMap中提供了entrySet()和keySet()两个放可以用来遍历map.其中entrySet()能够返回map中的一组Entry<key-value>作为元素的Set集合。获取到Set集合后就可以用itrator()或者foreach循环来遍历map集合,用entry.getKey();entry.getValue()来获取相应的key,value.keySet()能够返回一组以map的key作为元素的Set集合。获取到Set集合后就可以用itrator()或者foreach循环来遍历,遍历出来的元素为map的key值,如果想获取value,则用map.getValue(key);
在遍历速度方面使用entrySet()比keySet()的速度会较快。而同一种方法里面foreach比itrator快。
package test;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
/**
*
* @author zhongliang
* 这个类主要用来展示map遍历方法
*
*/
public class TraverseMap {
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<>();
for(Integer i = 0; i < 10000000; i ++) {
map.put(i.toString(), i.toString());
}
long time = System.currentTimeMillis();
traverseByEntrySetItrator(map);
long timeNow = System.currentTimeMillis();
System.out.println("traverseByEntrySetItrator方法: " + (timeNow - time));
time = System.currentTimeMillis();
traverseByEntrySetFor(map);
timeNow = System.currentTimeMillis();
System.out.println("traverseByEntrySetFor方法: " + (timeNow - time));
time = System.currentTimeMillis();
traverseByKeySetItrator(map);
timeNow = System.currentTimeMillis();
System.out.println("traverseByKeySetItrator方法: " + (timeNow - time));
time = System.currentTimeMillis();
traverseByKeySetFor(map);
timeNow = System.currentTimeMillis();
System.out.println("traverseByKeySetFor方法: " + (timeNow - time));
}
/**
*
* @Title: traverseByEntrySetItrator
* @Description: 通过entrySet() + itrator()遍历map
* @param: @param map
* @return: void
* @throws
*/
public static void traverseByEntrySetItrator(Map<String, String> map) {
Set<Entry<String, String>> entrySet = map.entrySet();
Iterator<Entry<String, String>> it = entrySet.iterator();
while(it.hasNext()) {
Entry<String, String> next = it.next();
next.getKey();
next.getValue();
}
}
/**
*
* @Title: traverseByEntrySetFor
* @Description: 通过entrySet() + foreach()遍历map
* @param: @param map
* @return: void
* @throws
*/
public static void traverseByEntrySetFor(Map<String, String> map) {
Set<Entry<String, String>> entrySet = map.entrySet();
for(Entry<String, String> en : entrySet) {
en.getKey();
en.getValue();
}
}
/**
*
* @Title: traverseByKeySet
* @Description: 通过keySet() + itrator()遍历map
* @param: @param map
* @return: void
* @throws
*/
public static void traverseByKeySetItrator(Map<String, String> map) {
Set<String> keySet = map.keySet();
Iterator<String> it = keySet.iterator();
while(it.hasNext()) {
String key = it.next();
map.get(key);
}
}
/**
*
* @Title: traverseByKeySetFor
* @Description: 通过keySet() + foreach()遍历map
* @param: @param map
* @return: void
* @throws
*/
public static void traverseByKeySetFor(Map<String, String> map) {
Set<String> keySet = map.keySet();
for(String key : keySet) {
map.get(key);
}
}
}