HashMap遍歷效率問題

2021-08-30 14:09:27 字數 1171 閱讀 2171

對於hashmap中的key和value的遍歷有兩種方法:

1.通過hashmap.keyset()方法返回key的集合,通過遍歷該集合的key得到相應的value值。

map map = new hashmap();

iterator iter = map.keyset().iterator();

while (iter.hasnext()) {

object key = iter.next();

object val = map.get(key);

2.通過hashmap.entryset()方法返回整個entry物件的集合,遍歷該集合中的每乙個鍵值對map.entry型別,entry.getvalue() entry.getkey()得到相應的值和鍵。

map map = new hashmap();

iterator iter = map.entryset().iterator();

while (iter.hasnext()) {

map.entry entry = (map.entry) iter.next();

object key = entry.getkey();

object val = entry.getvalue();

兩種方法雖然可以得到相同的結果,但是在效率上還是存在差別。

因為在第一種方式中遍歷每乙個key並通過hashmap.get(object key)來得到相應的值時,實際上這個過程會再次去遍歷整個entry 集合,以下是hashmap中的jdk1.6原始碼:

public v get(object key) {

if (key == null)

return getfornullkey();

int hash = hash(key.hashcode());

for (entrye = table[indexfor(hash, table.length)];

e != null;

e = e.next) {

object k;

if (e.hash == hash && ((k = e.key) == key || key.equals(k)))

return e.value;

return null;

因此第二種方法的效率會要高一些,經過測試發現的確也是這樣的。

HashMap集合遍歷

map的遍歷 1,迭代器 一鍵導包 ctrl shift o 先遍歷出key 再通過key找到value set keyset map.keyset 因為map中的key是唯一的 所以可以獲取到key的set集合 iterator it keyset.iterator 獲取迭代器 while it....

HashMap遍歷方式

hashmaphashmap new hashmap hashmap.put a a hashmap.put b b hashmap.put c c hashmap.put d d 第一種 普遍使用,二次取值 system.out.println 通過map.keyset遍歷key和value fo...

HashMap遍歷方式

hashmap是乙個鍵值對的集合,我們不能通過簡單的迴圈來遍歷hashmap,所以我們一般通過以下兩種方式來遍歷hashmap,一種是通過keyset集合來遍歷,另一種是通過entry鍵值對物件來遍歷。hashmap string string map newhashmap 16 map.put 李...