乐趣区

JAVA中HashMap二种遍历方法

在 java 中使用 HashMap 是主要有两种遍历方法,
JAVA 中文网整理校对代码如下:
第一种:
HashMap hashmap = new HashMap();
Iterator iterator = hashmap.keySet().iterator();
while (iterator.hasNext()) {
Object value = hashmap.get(iterator.next());
}
第二种:
HashMap hashmap = new HashMap();
Iterator iterator = hashmap.entrySet().iterator();
while (iter.hasNext()) {
Entry entry = (Entry) iter.next();
Object value= entry.getValue();
Object key =entry.getKey();
}
据说使用第二种方法要比第一种方法效率快,不过没有亲自验证!

本着对朋友们的负责 我今天做了测试
import java.util.HashMap;
import java.util.Iterator;
import java.util.Calendar;
public class HashMapTest {
public static void main(String[] args) {
HashMap hashmap = new HashMap();
for(int i=0;i<1000;i++){
hashmap.put(“”+i,”hello”);
}
long bs = Calendar.getInstance().getTimeInMillis();
Iterator iterator = hashmap.keySet().iterator();
//String value = “”;
while(iterator.hasNext()) {
//value = hashmap.get(iterator.next());
System.out.println(hashmap.get(iterator.next()));
}
System.out.println(Calendar.getInstance().getTimeInMillis() – bs);
listHashMap();
}
public static void listHashMap(){
java.util.HashMap hashmap = new java.util.HashMap();
for(int i=0;i<1000;i++){
hashmap.put(“”+i,”hello”);
}
long bs = Calendar.getInstance().getTimeInMillis();
//Set set = hashmap.entrySet() ;
java.util.Iterator it = hashmap.entrySet().iterator();
while(it.hasNext()){
java.util.Map.Entry entry = (java.util.Map.Entry)it.next();
// entry.getKey() 返回与此项对应的键
// entry.getValue() 返回与此项对应的值
System.out.println(entry.getValue());
}
System.out.println(Calendar.getInstance().getTimeInMillis() – bs);
}
}
对于 keySet 其实是遍历了 2 次,一次是转为 iterator,一次就从 hashmap 中取出 key 所对于的 value。
而 entryset 只是遍历了第一次,他把 key 和 value 都放到了 entry 中,所以就快了。
对于我们做 web 的,可能不部分都是用 vo 对象或是 form 封装信息,所以用到 hashmap 时,其内存放的都是上面的对象。因此使用 entryset 遍历性能会有所提高。
hashmap 使用很多,比如导入信息时就要用到,因大部分导入的信息要去判断是否有重复的信息,这样就可以利用 containsKey 来进行处理了,而不用在插入的时候去进行处理。

退出移动版