Map 中添加 1000000 条数据,key、value 都是 String 类型的字符串。
1、通过 keySet 遍历整个 Map
1)采用 Iterator 进行遍历
long start = System.currentTimeMillis();
Iterator iter = map.keySet().iterator();
while (iter.hasNext()) {
key = iter.next();
value = map.get(key);
}
long end = System.currentTimeMillis();
System.out.println("采用iterator遍历keySet: " + (end - start) + " ms");
2)采用 foreach 进行遍历
long start = System.currentTimeMillis();
Set keys = map.keySet();
for (String key : keys) {
value = map.get(key);
}
long end = System.currentTimeMillis();
System.out.println("采用foreach遍历keySet: " + (end - start) + " ms");
2、通过 entrySet 遍历整个 Map
1)采用 Iterator 进行遍历
long start = System.currentTimeMillis();
Iterator> iter = map.entrySet().iterator();
while (iter.hasNext()) {
entry = iter.next();
key = entry.getKey();
value = entry.getValue();
}
long end = System.currentTimeMillis();
System.out.println("采用iterator遍历entrySet: " + (end - start) + " ms");
2)采用 foreach 进行遍历
long start = System.currentTimeMillis();
Set> entrys = map.entrySet();
for (Entry entry : entrys) {
key = entry.getKey();
value = entry.getValue();
}
long end = System.currentTimeMillis();
System.out.println("采用foreach遍历entrySet: " + (end - start) + " ms");
1、通过 keySet 遍历整个 Map
2)采用 Iterator 进行遍历
long start = System.currentTimeMillis();
Iterator iter = map.keySet().iterator();
while (iter.hasNext()) {
key = iter.next();
}
long end = System.currentTimeMillis();
System.out.println("采用iterator遍历keySet: " + (end - start) + " ms");
2)采用 foreach 进行遍历
long start = System.currentTimeMillis();
Set keys = map.keySet();
for (String key : keys) {
}
long end = System.currentTimeMillis();
System.out.println("采用foreach遍历keySet: " + (end - start) + " ms");
2、通过 entrySet 遍历整个 Map
1)采用 Iterator 进行遍历
long start = System.currentTimeMillis();
Iterator> iter = map.entrySet().iterator();
while (iter.hasNext()) {
key = iter.next().getKey();
}
long end = System.currentTimeMillis();
System.out.println("采用iterator遍历entrySet: " + (end - start) + " ms");
2)采用 foreach 进行遍历
long start = System.currentTimeMillis();
Set> entrys = map.entrySet();
for (Entry entry : entrys) {
key = entry.getKey();
}
long end = System.currentTimeMillis();
System.out.println("采用foreach遍历entrySet: " + (end - start) + " ms");
1、通过 keySet 进行遍历
1)采用 Iterator 进行遍历
Iterator iter = map.keySet().iterator();
while (iter.hasNext()) {
value = map.get(iter.next());
}
long end = System.currentTimeMillis();
System.out.println("采用iterator遍历keySet: " + (end - start) + " ms");
2)采用 foreach 进行遍历
long start = System.currentTimeMillis();
Set keys = map.keySet();
for (String key : keys) {
value = map.get(key);
}
long end = System.currentTimeMillis();
System.out.println("采用foreach遍历keySet: " + (end - start) + " ms");
2、通过 entrySet 进行遍历
1)采用 Iterator 进行遍历
long start = System.currentTimeMillis();
Iterator> iter = map.entrySet().iterator();
while (iter.hasNext()) {
value = iter.next().getValue();
}
long end = System.currentTimeMillis();
System.out.println("采用iterator遍历entrySet: " + (end - start) + " ms");
2)采用 foreach 进行遍历
long start = System.currentTimeMillis();
Set> entrys = map.entrySet();
for (Entry entry : entrys) {
value = entry.getValue();
}
long end = System.currentTimeMillis();
System.out.println("采用foreach遍历entrySet: " + (end - start) + " ms");
3、通过 values 进行遍历
1)采用 Iterator 进行遍历
long start = System.currentTimeMillis();
Iterator iter = map.values().iterator();
while (iter.hasNext()) {
value = iter.next();
}
long end = System.currentTimeMillis();
System.out.println("采用iterator遍历values " + (end - start) + " ms");
2)采用 foreach 进行遍历
long start = System.currentTimeMillis();
Collection coll = map.values();
for (String value : coll) {
}
long end = System.currentTimeMillis();
System.out.println("采用foreach遍历values: " + (end - start) + " ms");
1、
-----遍历Map的key+value-----
采用iterator遍历keySet: 56 ms
采用foreach遍历keySet: 47 ms
采用iterator遍历entrySet: 28 ms
采用foreach遍历entrySet: 27 ms
-----遍历Map的key-----
采用iterator遍历keySet: 27 ms
采用foreach遍历keySet: 21 ms
采用iterator遍历entrySet: 21 ms
采用foreach遍历entrySet: 21 ms
-----遍历Map的value-----
采用iterator遍历keySet: 34 ms
采用foreach遍历keySet: 44 ms
采用iterator遍历entrySet: 27 ms
采用foreach遍历entrySet: 26 ms
采用iterator遍历values 26 ms
采用foreach遍历values: 27 ms
2、
-----遍历Map的key+value-----
采用iterator遍历keySet: 53 ms
采用foreach遍历keySet: 46 ms
采用iterator遍历entrySet: 30 ms
采用foreach遍历entrySet: 27 ms
-----遍历Map的key-----
采用iterator遍历keySet: 22 ms
采用foreach遍历keySet: 20 ms
采用iterator遍历entrySet: 24 ms
采用foreach遍历entrySet: 21 ms
-----遍历Map的value-----
采用iterator遍历keySet: 43 ms
采用foreach遍历keySet: 41 ms
采用iterator遍历entrySet: 25 ms
采用foreach遍历entrySet: 24 ms
采用iterator遍历values 28 ms
采用foreach遍历values: 21 ms
3、
-----遍历Map的key+value-----
采用iterator遍历keySet: 55 ms
采用foreach遍历keySet: 46 ms
采用iterator遍历entrySet: 31 ms
采用foreach遍历entrySet: 28 ms
-----遍历Map的key-----
采用iterator遍历keySet: 26 ms
采用foreach遍历keySet: 27 ms
采用iterator遍历entrySet: 24 ms
采用foreach遍历entrySet: 26 ms
-----遍历Map的value-----
采用iterator遍历keySet: 42 ms
采用foreach遍历keySet: 42 ms
采用iterator遍历entrySet: 26 ms
采用foreach遍历entrySet: 26 ms
采用iterator遍历values 27 ms
采用foreach遍历values: 26 ms
1、使用 Iterator 和 foreach 本质上速度差不多,foreach 底层也是使用 Iterator 进行的。
2、如果只遍历 Map 中的 key 的话,可以使用 keySet。
3、如果只遍历 Map 中的 value 的话,可以使用 values。
4、使用 entrySet 遍历 Map 速度真的很快,建议使用 entrySet遍历 Map 集合。
https://github.com/dontsaoqi/testMap