码迷,mamicode.com
首页 > 其他好文 > 详细

HashSet与HashMap源代码深度剖析

时间:2018-05-05 18:11:48      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:深度剖析   add   key   分享   没有   image   对象   剖析   set   

HashSet源码分析:

先来看一下它的构造方法:

技术分享图片

呃~~居然它的底层是用HashMap来实现的,颠覆三观,那它究竟是如何来用的呢?继续来往下跟:

技术分享图片

对于HashSet而言是没有key->value的结构的,那它是怎么跟HashMap关联到一块的呢?接着得查看add方法了:

技术分享图片

也就是将我们往HashSet添加的元素是被用作HashMap的key,而HashMap的Value是一个常量,看一下它长啥样:

技术分享图片

 而这个字段也说明了,它是一个"Dummy value",也就是假的值,因为对于HashSet来说,只需要用到HashMap的key就行了,对于value不关心。

接着再来看一下删除元素的实现:

技术分享图片

当然都是借助于HashMap来删除喽~

 技术分享图片
那它的其它方法其上差不多了,既然底层是由HashMap来实现的,那接下来就得探究一下HashMap的底层原理喽。

HashMap源码分析:

技术分享图片 

先来查看一下空的构造方法:
技术分享图片

 

总结:

  • HashSet底层是使用HashMap实现的。当使用add方法将对像添加到Set当中时,实际上是将该对象作为底层所维护的Map对象的key,而value则都是同一个Object对象(该对象我们用不上);
  •  

HashSet与HashMap源代码深度剖析

标签:深度剖析   add   key   分享   没有   image   对象   剖析   set   

原文地址:https://www.cnblogs.com/webor2006/p/8995256.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!