首页 > 代码库 > HashMap随机取值和迭代器取值的对比
HashMap随机取值和迭代器取值的对比
一共四中方法,前两种是迭代器取值,后两种是随机取值,循环了5000万次,时间分别为:迭代器读取的速度大约是随机读取的速度的1.5倍,数据量越大,差距越明显。
另外,插入是读取的100倍左右的时间(这个判定只是个大概参考)。
<style>p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco }</style>48138(插入)
403(迭代器读取)
400(迭代器读取)
653(随机读取)
561(随机读取)
package main; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; public class test { public static void main(String[] args) { int mapCount = 50000000; String tmp = ""; Map<Integer,String> testMap = new HashMap<>(); String testValuehttp://www.mamicode.com/= ""; Long startTime0 = System.currentTimeMillis(); for(int i = 1;i<mapCount;i++){ tmp = testMap.put(i, testValue); } Long endTime0 = System.currentTimeMillis(); System.out.println(endTime0-startTime0); Long startTime1 = System.currentTimeMillis(); for(Entry<Integer,String> entry : testMap.entrySet()){ tmp = entry.getValue(); } Long endTime1 = System.currentTimeMillis(); System.out.println(endTime1-startTime1); Long startTime2 = System.currentTimeMillis(); Iterator<Entry<Integer, String>> it = testMap.entrySet().iterator(); while(it.hasNext()){ tmp = it.next().getValue(); } Long endTime2 = System.currentTimeMillis(); System.out.println(endTime2-startTime2); Long startTime3 = System.currentTimeMillis(); for(Integer i : testMap.keySet()){ tmp = testMap.get(i); } Long endTime3 = System.currentTimeMillis(); System.out.println(endTime3-startTime3); Long startTime4 = System.currentTimeMillis(); for(Entry<Integer,String> entry : testMap.entrySet()){ tmp = testMap.get(entry.getKey()); } Long endTime4 = System.currentTimeMillis(); System.out.println(endTime4-startTime4); } }
HashMap随机取值和迭代器取值的对比
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。