首页 > 代码库 > map遍历测试结果
map遍历测试结果
结论:一般情况下推荐使用enterSet的for循环(即以下的方法2),如果只是取key值可以使用keySet性能会更好。
因为keySet只取key,enterSet即取了key又取了value。
public static void main(String[] args) throws Exception { ConcurrentHashMap<Long, ReqPacket> r = new ConcurrentHashMap<Long, ReqPacket>(); long size = 2000000; // 方法1 for (long i = 0; i < size; i++) { r.put(i, new ReqPacket()); } System.out.println("方法1开始执行数:" + r.size()); long t1 = System.currentTimeMillis(); Iterator<Entry<Long, ReqPacket>> iter2 = r.entrySet().iterator(); while (iter2.hasNext()) { // ReqPacket value=http://www.mamicode.com/iter2.next().getValue(); r.remove(iter2.next().getKey()); } System.out.println("方法1 entrySet hasNext 执行时间:" + (System.currentTimeMillis() - t1) + " 结束数量:" + r.size()); // 方法2 for (long i = 0; i < size; i++) { r.put(i, new ReqPacket()); } System.out.println("方法2开始执行数:" + r.size()); long t2 = System.currentTimeMillis(); for (Entry<Long, ReqPacket> entry2 : r.entrySet()) { ReqPacket value = entry2.getValue(); r.remove(entry2.getKey()); } System.out.println("方法2 entrySet for 执行时间:" + (System.currentTimeMillis() - t2) + " 结束数量:" + r.size()); // 方法3 for (long i = 0; i < size; i++) { r.put(i, new ReqPacket()); } System.out.println("方法3开始执行数:" + r.size()); long t3 = System.currentTimeMillis(); for (Long key : r.keySet()) { ReqPacket value = r.get(key); r.remove(key); } System.out.println("方法3 keySet for 执行时间:" + (System.currentTimeMillis() - t3) + " 结束数量:" + r.size()); // 方法4 for (long i = 0; i < size; i++) { r.put(i, new ReqPacket()); } System.out.println("方法4开始执行数:" + r.size()); long t4 = System.currentTimeMillis(); Iterator<Long> iter = r.keySet().iterator(); while (iter.hasNext()) {// ReqPacket value = http://www.mamicode.com/r.get(iter.next()); r.remove(iter.next()); } System.out.println("方法4 keySet hasNext 执行时间:" + (System.currentTimeMillis() - t4) + " 结束数量:" + r.size()); }
测试结果:
方法1开始执行数:2000000方法1 entrySet hasNext 执行时间:194 结束数量:0方法2开始执行数:2000000方法2 entrySet for 执行时间:175 结束数量:0方法3开始执行数:2000000方法3 keySet for 执行时间:230 结束数量:0方法4开始执行数:2000000方法4 keySet hasNext 执行时间:104 结束数量:0
map遍历测试结果
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。