美文网首页
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