美文网首页
HashMap是如何维护EntrySet的

HashMap是如何维护EntrySet的

作者: FlynnHai | 来源:发表于2018-06-05 16:30 被阅读23次

    今天看下HashMap类的entrySet方法的实现。看的不太明白。

    源码如下:

    直接返回entrySet,但是这个entrySet是怎么来的,怎么存储数据的呢?

    貌似整个过程中,就直接返回了entrySet,我们在put 的时候也看不到jdk将put的元素加入到entrySet中,那我们遍历的时候元素哪里来?

    换个方式看下呢:

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

    while(iterator.hasNext()) {

    Map.Entry next = iterator.next();

    String key = next.getKey();

    String value = next.getValue();

    System.out.println("key = "+key+";value = "+value);}

    也就是说最后是通过迭代器来实现数据的遍历的。

    增强的for循环内部也是调用了iterator。

    为什么keySet方式遍历Map的性能不如entrySet性能.

          简单说就是keySet取值的时候,耗时。二者在此时的性能应该是相同的,但方式一再取得key所对应的value时,此时还要访问Map的这个方法,这时,方式一多遍历了一次table.

    参照:http://www.mamicode.com/info-detail-2034228.html 浅谈HashMap原理,记录entrySet中的一些疑问

    https://blog.csdn.net/lwj_zeal/article/details/72898198

    相关文章

      网友评论

          本文标题:HashMap是如何维护EntrySet的

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