2、准备测试数据:HashMap1:大小为1000000,key和value的值均为String,key的值为1、2、3………1000000;Map<String,String> map =new HashMap<String,String>(); String key,value; for(int i=1;i<=num;i++){ key = ""+i; value="value"+i; map.put(key,value); }HashMap2:大小为1000000,key和value的值为String,key的值为50、100、150……..50000000;Map<String,String> map = new HashMap<String,String>(); String key,value; for(int i=1;i<=num;i++){ key=""+(i*50); value="value"+key; map.put(key,value);}3、场景测试3.1遍历key+value1)keySet利用Iterator遍历long startTime1 =System.currentTimeMillis();Iterator<String> iter = map.keySet().iterator();while (iter.hasNext()){ key=iter.next(); value=map.get(key);}long endTime1 =System.currentTimeMillis();System.out.println("第一个程序运行时间:"+(endTime1-startTime1)+"ms");2)keySet利用for遍历long startTime2 =System.currentTimeMillis(); for(String key2:map.keySet()){ value=map.get(key2); }long endTime2 =System.currentTimeMillis();System.out.println("第二个程序运行时间:"+(endTime2-startTime2)+"ms");3)entrySet利用Iterator遍历long startTime3=System.currentTimeMillis();Iterator<Map.Entry<String,String>> iter3 =map.entrySet().iterator();Map.Entry<String,String> entry3;while (iter3.hasNext()){ entry3 = iter3.next(); key = entry3.getKey(); value=entry3.getValue();}long endTime3 =System.currentTimeMillis();System.out.println("第三个程序运行时间:" +(endTime3-startTime3)+"ms");4)entrySet利用for遍历long startTime4=System.currentTimeMillis();for(Map.Entry<String,String> entry4:map.entrySet()){ key=entry4.getKey(); value=entry4.getValue();}long endTime4 =System.currentTimeMillis();System.out.println("第四个程序运行时间:"+(endTime4-startTime4) +"ms");3.2遍历key1)keySet利用Iterator遍历long startTime1 =System.currentTimeMillis();Iterator<String> iter = map.keySet().iterator();while (iter.hasNext()){ key=iter.next();}long endTime1 =System.currentTimeMillis();System.out.println("第一个程序运行时间:"+(endTime1-startTime1)+"ms");2)keySet利用for遍历long startTime2 =System.currentTimeMillis();for(String key2:map.keySet()){}long endTime2 =System.currentTimeMillis();System.out.println("第二个程序运行时间:"+(endTime2-startTime2)+"ms");3)entrySet利用Iterator遍历 long startTime3=System.currentTimeMillis();Iterator<Map.Entry<String,String>> iter3 =map.entrySet().iterator();Map.Entry<String,String> entry3;while (iter3.hasNext()){ key = iter3.next().getKey();}long endTime3 =System.currentTimeMillis();System.out.println("第三个程序运行时间:" +(endTime3-startTime3)+"ms");4)entrySet利用for遍历 long startTime4=System.currentTimeMillis();for(Map.Entry<String,String> entry4:map.entrySet()){ key=entry4.getKey();}long endTime4 =System.currentTimeMillis();System.out.println("第四个程序运行时间:"+(endTime4-startTime4) +"ms");3.3遍历value1)keySet利用Iterator遍历long startTime1 =System.currentTimeMillis();Iterator<String> iter = map.keySet().iterator();while (iter.hasNext()){ value=map.get(iter.next());}long endTime1 =System.currentTimeMillis();System.out.println("第一个程序运行时间:"+(endTime1-startTime1)+"ms");2)keySet利用for遍历 long startTime2 =System.currentTimeMillis();for(String key2:map.keySet()){ value=map.get(key2);}long endTime2 =System.currentTimeMillis();System.out.println("第二个程序运行时间:"+(endTime2-startTime2)+"ms");3)entrySet利用Iterator遍历 long startTime3=System.currentTimeMillis();Iterator<Map.Entry<String,String>> iter3 =map.entrySet().iterator();Map.Entry<String,String> entry3;while (iter3.hasNext()){ value=iter3.next().getValue();}long endTime3 =System.currentTimeMillis();System.out.println("第三个程序运行时间:" +(endTime3-startTime3)+"ms");4)entrySet利用for遍历long startTime4=System.currentTimeMillis();for(Map.Entry<String,String> entry4:map.entrySet()){ value=entry4.getValue();}long endTime4 =System.currentTimeMillis();System.out.println("第四个程序运行时间:"+(endTime4-startTime4) +"ms");5)values利用iterator遍历 long startTime5=System.currentTimeMillis();Iterator<String> iter5=map.values().iterator();while (iter5.hasNext()){ value=iter5.next();}long endTime5 =System.currentTimeMillis();System.out.println("第五个程序运行时间:"+(endTime5-startTime5) +"ms");6)values利用for遍历long startTime6=System.currentTimeMillis();for(String value6:map.values()){}long endTime6 =System.currentTimeMillis();System.out.println("第六个程序运行时间:"+(endTime6-startTime6) +"ms");4、时间对比4.1遍历key+value4.2遍历key4.3遍历value5、总结从上面的时间比较来看:1)map的key采用简单形式和复杂形式时,查找的效率是不同的,简单的key值效率更高2)当数据量大的时候,采用entrySet遍历key+value的效率要高于keySet3)当我们只需要取得value值时,采用values来遍历效率更高
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)