【Java基础】HashMap的四种遍历以及耗时对比
2017-12-12 20:26
369 查看
HashMap的四种遍历以及耗时对比
1.method1
public static void method1(Map<String, Object> map) { getTime(); Set<String> keySet = map.keySet();//键集合 Iterator<String> it = keySet.iterator();//迭代器 while(it.hasNext()) { String key = it.next(); Object value = map.get(key); // System.out.println(key+"_"+value); } getTime(); }
2.method2
public static void method2(Map<String,Object> map) { getTime(); for(String key : map.keySet()) { Object value = map.get(key); // System.out.println(key+"_"+value); } getTime(); }
3.method3
public static void method3(Map<String,Object> map) { getTime(); Set<Entry<String, Object>> entrySet = map.entrySet(); Iterator<Entry<String, Object>> it = entrySet.iterator(); while(it.hasNext()) { Entry<String, Object> next = it.next(); String key = next.getKey(); Object value = next.getValue(); // System.out.println(key+"_"+value); } getTime(); }
4.method4
public static void method4(Map<String,Object> map) { getTime(); for(Map.Entry<String, Object> entry : map.entrySet()) { String key = entry.getKey(); Object value = entry.getValue(); // System.out.println(key+"_"+value); } getTime(); }
5.耗时对比
进行简单的数据量遍历测试,遍历时间应该与电脑性能不同有差异(尝试1000W时,电脑性能已经不够了,各位可以自行测试)。时间差单位ms。数据量 | 5W | 50W | 500W(3次) |
method1 | 8 | 25 | 203-180-178 |
method2 | 11 | 24 | 201-198-187 |
method3 | 10 | 21 | 145-137-136 |
method4 | 9 | 21 | 151-135-136 |
6.整体代码
package hashMap; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.Set; /** * * @author wsz * @date 2017年12月12日 耗时单位ms ---------------------------------- 数据量 5W 50W 500W ---------------------------------- method1 8 25 203-180-178 ---------------------------------- method2 11 24 201-198-187 ---------------------------------- method3 10 21 145-137-136 ---------------------------------- method4 9 21 151-135-136 ---------------------------------- */ public class Demo1 { public static void main(String[] args) { Map<String,Object> map = new HashMap<String, Object>(); long size = 10000000L; for(int i = 0; i < size ;i++) { map.put(String.valueOf(i), i); } method1(map); method2(map); method3(map); method4(map); } public static void method1(Map<String, Object> map) { getTime(); Set<String> keySet = map.keySet();//键集合 Iterator<String> it = keySet.iterator();//迭代器 while(it.hasNext()) { String key = it.next(); Object value = map.get(key); // System.out.println(key+"_"+value); } getTime(); } public static void method2(Map<String,Object> map) { getTime(); for(String key : map.keySet()) { Object value = map.get(key); // System.out.println(key+"_"+value); } getTime(); } public static void method3(Map<String,Object> map) { getTime(); Set<Entry<String, Object>> entrySet = map.entrySet(); Iterator<Entry<String, Object>> it = entrySet.iterator(); while(it.hasNext()) { Entry<String, Object> next = it.next(); String key = next.getKey(); Object value = next.getValue(); // System.out.println(key+"_"+value); } getTime(); } public static void method4(Map<String,Object> map) { getTime(); for(Map.Entry<String, Object> entry : map.entrySet()) { String key = entry.getKey() 986e ; Object value = entry.getValue(); // System.out.println(key+"_"+value); } getTime(); } public static void getTime() { System.out.println(System.currentTimeMillis()); } }
相关文章推荐
- Java --- HashMap的四种循环遍历方式及性能对比
- Java中HashMap遍历的四种方式
- java语言基础(64)——集合框架(集合的由来以及数组集合的区别 集合的遍历)
- 《Map中HashMap与TreeMap的排序以及四种遍历方式》
- java基础-集合遍历输出的四种方式
- Java HashMap循环遍历方式及其性能对比
- Java基础之ArrayList与LinkedList、Vector,以及HashMap与HashTable的区别
- HashMap源码分析以及四种遍历方法
- 【Java基础之集合(一)】各种常用集合(Array、ArrayList、HashSet、HashMap、TreeMap等)分析对比
- JAVA基础--遍历map的四种方式
- Java——HashMap<> 四种遍历方式
- [Java基础要义]HashMap、LinkedHashMap元素遍历机制探讨
- java 遍历arrayList的四种方法及其效率对比
- java基础解析系列(五)---HashMap并发下的问题以及HashTable和CurrentHashMap的区别
- Java遍历List四种方法的效率对比
- java 遍历arrayList的四种方法及其效率对比
- Java中HashMap遍历的四种方式
- [Java基础要义]HashMap、LinkedHashMap元素遍历机制探讨
- [Java基础要义]HashMap、LinkedHashMap元素遍历机制探讨
- Java中的四种引用以及ReferenceQueue和WeakHashMap的使用示例