HashMap循环遍历方式及其性能对比
package com.wu;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class Test {
public static void main(String[] args) {
Map<String,String> map=new HashMap<String,String>();
map.put("username", "qq");
map.put("passWord", "123");
map.put("userID", "1");
map.put("email", "qq@qq.com");
//第一种采用for each map.entrySet()
for(Map.Entry<String, String> entry:map.entrySet()){
System.out.println("key="+entry.getKey()+"--->value="+entry.getValue());
}
//第二种采用迭代 显示调用map.entrySet()的集合迭代器
Set set = map.entrySet();
Iterator i = set.iterator();
while(i.hasNext()){
Map.Entry<String, String> entry1=(Map.Entry<String, String>)i.next();
System.out.println(entry1.getKey()+"=="+entry1.getValue());
}
for(i = set.iterator(); i.hasNext();) {
Map.Entry me = ( Map.Entry ) i.next();
System.out.println(me.getKey()+"=="+me.getValue());
}
//第三种采用keySet()迭代 for each map.keySet(),再调用get获取
Iterator it=map.keySet().iterator();
while(it.hasNext()){
String key;
String value;
key=it.next().toString();
value=map.get(key);
System.out.println(key+"--"+value);
}
//用keySet()迭代 for each map.keySet(),再调用get获取
for (String key : map.keySet()) {
map.get(key);
System.out.println(key+"=="+map.get(key));
}
//第四种 for each map.entrySet(),用临时变量保存map.entrySet()
Set<Entry<String, String>> entrySet = map.entrySet();
for (Entry<String, String> entry : entrySet) {
entry.getKey();
entry.getValue();
System.out.println("key===>"+entry.getKey()+"value==>"+entry.getValue());
}
}
}
总结:
a。HashMap的循环,如果既需要key也需要value,直接使用
//第一种采用for each map.entrySet()
Map<String,String> map=new HashMap<String,String>();
for(Map.Entry<String, String> entry:map.entrySet()){
System.out.println("key="+entry.getKey()+"--->value="+entry.getValue());
}
b。HashMap的循环,如果只需要key而无需value的话,可以直接使用
//用keySet()迭代 for each map.keySet(),再调用get获取
Map<String,String> map=new HashMap<String,String>();
for (String key : map.keySet()) {
map.get(key);
System.out.println(key+"=="+map.get(key));
}