只遍歷 key
只遍歷 value
測試結果
小結
//hashmap1:大小為1000000,
//key和value的值均為string,
//key的值為1、2、3.........1000000
mapmap1 =
newhashmap
();string key1,value1;
for(
int i=
1;i<=
1000000
;i++
)//hashmap2:大小為1000000,
//key和value的值為string,
//key的值為50、100、150........50000000
mapmap2 =
newhashmap
();string key2,value2;
for(
int i=
1;i<=
1000000
;i++
)
public
static
long
keyset_iterator
(map
map)
long endtime1 =system.
currenttimemillis()
;return endtime1-starttime1;
}
public
static
long
keyset_for
(map
map)
long endtime2 =system.
currenttimemillis()
;return endtime2-starttime2;
}
public
static
long
entryset_iterator
(map
map)
long endtime3 =system.
currenttimemillis()
;return endtime3-starttime3;
}
public
static
long
entryset_for
(map
map)
long endtime4 =system.
currenttimemillis()
;return endtime4-starttime4;
}
public
static
long
keyset_iterator
(map
map)
long endtime1 =system.
currenttimemillis()
;return endtime1-starttime1;
}
public
static
long
keyset_for
(map
map)
long endtime2 =system.
currenttimemillis()
;return endtime2-starttime2;
}
public
static
long
entryset_iterator
(map
map)
long endtime3 =system.
currenttimemillis()
;return endtime3-starttime3;
}
public
static
long
entryset_for
(map
map)
long endtime4 =system.
currenttimemillis()
;return endtime4-starttime4;
}
public
static
long
keyset_iterator
(map
map)
long endtime1 =system.
currenttimemillis()
;return endtime1-starttime1;
}
public
static
long
keyset_for
(map
map)
long endtime2 =system.
currenttimemillis()
;return endtime2-starttime2;
}
public
static
long
entryset_iterator
(map
map)
long endtime3 =system.
currenttimemillis()
;return endtime3-starttime3;
}
public
static
long
entryset_for
(map
map)
long endtime4 =system.
currenttimemillis()
;return endtime4-starttime4;
}
public
static
values_iterator
(map
map)
long endtime5 =system.
currenttimemillis()
;return endtime5-starttime5;
}
public
static
values_for
(map
map)
long endtime6 =system.
currenttimemillis()
;return endtime6-starttime6;
}
同時遍歷 key+value
資料量小
資料量大
keyset利用iterator遍歷
124ms
126ms
keyset利用for遍歷
105ms
113ms
entryset利用iterator遍歷
80ms
100ms
entryset利用for遍歷
78ms
103ms
只遍歷 key
資料量小
資料量大
keyset利用iterator遍歷
97ms
118ms
keyset利用for遍歷
93ms
114ms
entryset利用iterator遍歷
95ms
115ms
entryset利用for遍歷
95ms
113ms
只遍歷 value
資料量小
資料量大
keyset利用iterator遍歷
125ms
146ms
keyset利用for遍歷
114ms
140ms
entryset利用iterator遍歷
102ms
120ms
entryset利用for遍歷
104ms
121ms
values利用iterator遍歷
97ms
124ms
values利用for遍歷
107ms
114ms
map的key採用簡單形式和複雜形式時,查詢的效率是不同的,簡單的key值效率更高
當資料量大的時候,採用entryset遍歷key+value的效率要高於keyset
這也是為什麼「大家建議使用entryset,認為entryset對於大資料量的查詢來說,速度更快」當我們只需要取得value值時,採用values來遍歷效率更高
不同方式遍歷Map集合(全)
public static void main string args 第一種方法 通過map.keyset遍歷key和value for string key map.keyset 第二種方法 通過map.entryset和迭代器遍歷map iterator car map.entryset in...
遍歷Map集合的4種方法
public static void main string args 第二種 system.out.println 通過map.entryset使用iterator遍歷key和value iterator it map.entryset iterator while it.hasnext 第三種 ...
Map 集合遍歷的4種方法
ap 集合初始化時,指定集合初始值大小。說明 hashmap 使用 hashmap int initialcapacity 初始化。正例 initialcapacity 需要儲存的元素個數 負載因子 1。注意負載因子 即 loade ctor 預設為 0.75,如果暫時無法確定初始值大小,請設定為 ...