zoukankan      html  css  js  c++  java
  • HashMap遍历方式探究

    HashMap的遍历有两种常用的方法,那就是使用keyset及entryset来进行遍历,但两者的遍历速度是有差别的,下面请看实例: 

    package com.HashMap.Test;
    
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map.Entry;

    public class HashMapTest { public static void main(String[] args) { HashMap<Integer, Integer> hm = new HashMap<>(); for(int i=0;i<10000000;i++){ hm.put(i, i); } //方式1: long currentTimeMillisStart = System.currentTimeMillis(); Iterator<Entry<Integer, Integer>> iterator = hm.entrySet().iterator(); while(iterator.hasNext()){ Entry<Integer, Integer> next = iterator.next(); //System.out.println("key: "+next.getKey()+" value: "+next.getValue()); } long currentTimeMillisEnd =System.currentTimeMillis(); System.out.println("Time: " + (currentTimeMillisEnd-currentTimeMillisStart)); //方式2 long currentTimeMillisStart2 = System.currentTimeMillis(); Iterator<Integer> iterator2 = hm.keySet().iterator(); while(iterator2.hasNext()){ Integer next = iterator2.next(); //System.out.println("key: "+ next+" value: "+hm.get(next)); } long currentTimeMillisEnd2 =System.currentTimeMillis(); System.out.println("Time: " + (currentTimeMillisEnd2-currentTimeMillisStart2)); } }
    对于keySet其实是遍历了2次,一次是转为iterator,一次就从hashmap中取出key所对于的value。而entryset只是遍历了第一次,他把key和value都放到了entry中。 
    Time: 58
    Time: 78
  • 相关阅读:
    配置SecondaryNameNode
    hadoop 根据secondary namenode恢复namenode
    Hadoop如何修改HDFS文件存储块大小
    hadoop1.2.1 datanode 由于权限无法启动 expected: rwxr-xr-x
    CentOS 7 下,如何设置DNS服务器
    Eclipse+pydev环境搭建
    Python numpy
    Leetcode#54 Spiral Matrix
    Leetcode#53 Maximum Subarray
    Leetcode#40 Combination Sum II
  • 原文地址:https://www.cnblogs.com/felixzh/p/5970050.html
Copyright © 2011-2022 走看看