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

HashSet源码

时间:2015-04-03 17:03:23      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

HashSet实现Set接口,其中的很多方法都是用一个HashMap实现的

? ?

技术分享

? ?

? ?

HashSet中的元素都存放在HashMapkey上面,相对于HashMap用了一个entry存放keyvalueHashSet只存放了key值,也就只用到了HashMap中的key

? ?

value中的值都是统一的一个private static final Object PRESENT = new Object();

? ?

技术分享

? ?

HashSetadd方法调用的是底层HashMap中的put()方法,而如果是在HashMap中调用put,首先会判断key是否存在,如果key存在则修改value值,如果key不存在这插入这个key-value。而在set中,因为value值没有用,也就不存在修改value值的说法,因此往HashSet中添加元素,首先判断元素(也就是key)是否存在,如果不存在这插入,如果存在着不插入,这样HashSet中就不存在重复值。

? ?

技术分享

? ?

技术分享

? ?

技术分享

? ?

技术分享

? ?

技术分享

? ?

技术分享

HashSet源码

标签:

原文地址:http://www.cnblogs.com/keedor/p/4390254.html

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