美文网首页
map遍历效率学习

map遍历效率学习

作者: supory | 来源:发表于2018-03-12 11:07 被阅读88次

    map的遍历

    第一种:KeySet()

    将Map中所有的键存入到set集合中。因为set具备迭代器。所有可以迭代方式取出所有的键,再根据get方法。获取每一个键对应的值。 keySet():迭代后只能通过get()取key 。

    取到的结果会乱序,是因为取得数据行主键的时候,使用了HashMap.keySet()方法,而这个方法返回的Set结果,里面的数据是乱序排放的。

    典型用法如下:

    Map map = new HashMap();

    map.put("key1","lisi1");

    map.put("key2","lisi2");

    map.put("key3","lisi3");

    map.put("key4","lisi4");

    //先获取map集合的所有键的set集合,keyset()

    Iterator it = map.keySet().iterator();

    //获取迭代器

    while(it.hasNext()){

    Object key = it.next();

    System.out.println(map.get(key));

    }

    第二种:entrySet()

    Set> entrySet() //返回此映射中包含的映射关系的 Set 视图。(一个关系就是一个键-值对),就是把(key-value)作为一个整体一对一对地存放到Set集合当中的。Map.Entry表示映射关系。entrySet():迭代后可以e.getKey(),e.getValue()两种方法来取key和value。返回的是Entry接口。

    典型用法如下:

    Map map = new HashMap();

    map.put("key1","lisi1");

    map.put("key2","lisi2");

    map.put("key3","lisi3");

    map.put("key4","lisi4");

    //将map集合中的映射关系取出,存入到set集合

    Iterator it = map.entrySet().iterator();

    while(it.hasNext()){

    Entry e =(Entry) it.next();

    System.out.println("键"+e.getKey () + "的值为" + e.getValue());

    }

    推荐使用第二种方式,即entrySet()方法,效率较高。

    对于keySet其实是遍历了2次,一次是转为iterator,一次就是从HashMap中取出key所对于的value。而entryset只是遍历了第一次,它把key和value都放到了entry中,所以快了。两种遍历的遍历时间相差还是很明显的。

    相关文章

      网友评论

          本文标题:map遍历效率学习

          本文链接:https://www.haomeiwen.com/subject/wvzefftx.html