HashSet源代码剖析
来源:互联网 发布:闲鱼的淘宝介入有用吗 编辑:程序博客网 时间:2024/06/05 16:41
今天来看看HashSet的源代码。
从图片可以看到HashSet是AbstractSet的子类。实现了Set,Cloneable和Serializable接口。说明HashSet是可以序列话和可以克隆的。
看到这两个成员变量其实你就已经明白了HashSet为什么叫HashSet,和猜到HashSet中的方法的实现。
HashSet底层维护着一个HashMap对象。在new出HashSet的时候,将这个map对象初始化。HashSet的构造方法跟HashMap也差不多,也是有四个。其实底层也是调用HashMap的构造方法。下面的代码可以充分说这一点。
包括里面的add方法,clear方法,remove方法其实都是调用HashMap的put方法,clear方法和remove方法。
可能会有个疑问。HashMap是key-value对,HashSet只有value。底层代码怎么通用啊!!其实很简单。上面第二章图片中有private static final Object PRESENT = new Object();这段代码,当你调用HashSet.add(value);方法时,其实是调用HashSet.map.put(value,PRESENT );把你add的值当做底层维护的map对象的key,PRESENT 当做是map的value,放到map中。所以HashSet的add方法add的值是不会重复的,因为是调用HashMap.put(key, value)方法,而HashMap.put方法的key是不会重复的。
0 0
- HashSet源代码剖析
- JavaSE第五十二讲:HashSet 与HashMap源代码深度剖析
- HashSet剖析
- HashSet剖析
- HashSet剖析
- HashSet 源代码
- 剖析HASHMAP/HASHSET
- HashSet源码剖析
- java-基础-hashset剖析
- HashMap HashTable HashSet区别剖析
- HashMap HashTable HashSet区别剖析
- HashSet, HashTable,HashMap区别剖析
- java HashSet源码简单剖析
- 【Java深入】HashSet源码剖析
- Java集合HashSet源码剖析
- HashMap 和HashSet 源代码详解
- HashSet源代码分析(JDK1.8)
- 深入源码剖析 HashSet、HashMap、HashTable
- java中为什么要把main方法定义为一个static方法?
- connect 是 errno 为111 115 101 22 错误分析
- JAVA 判断TXT文件编码格式
- Linux串口编程
- linux性能分析及调优
- HashSet源代码剖析
- 图表highcharts联合jquery ajax 后端取数据前端图表渲染
- Oracle编辑数据时提示:这些查询结果不可更新,请使用ROWI或者SELECT……FOR UPDATE获得可更新结果。
- android Repo 初识
- jQuery适用技巧笔记整合
- cocos2d-x IOS版本发布
- html parse
- 页眉页脚的制作 论文格式(奇偶页眉不同,页码连续)
- 【转】C++内存分区问题