专业网站建设费用怎么算,xampp可以做网站吗,代写文案平台,该模板尚未授权此网站1.简介 继续分析源码#xff0c;上一篇文章把HashMap的分析完毕。本文开始分析HashSet简单的介绍一下。 HashSet是一个无重复元素集合#xff0c;内部使用HashMap实现#xff0c;所以HashMap的特征耶继承了下来。存储的元素是无序的并且HashSet允许使用空的元素。 HashSet是…1.简介 继续分析源码上一篇文章把HashMap的分析完毕。本文开始分析HashSet简单的介绍一下。 HashSet是一个无重复元素集合内部使用HashMap实现所以HashMap的特征耶继承了下来。存储的元素是无序的并且HashSet允许使用空的元素。 HashSet是非同步的。如果多个线程同时访问一个哈希 set而其中至少一个线程修改了该 set那么它必须 保持外部同步。参考JDK1.8文档,关注回复JDK可获取中文版JDK文档 Set s Collections.synchronizedSet(new HashSet(...)); 上文链接 HashMap源码阅读(一) HashMap源码阅读(二) 1.继承结构 先看一下HashMap的继承结构 和其他集合一样HashSet也实现了Cloneable和Serializable两个接口同时也是先了Set接口实现了Set的一些接口规范。 Cloneable 克隆Serializable序列化2属性 HashSet的存储数据是由HashMap来实现的所以HashMap的一些特性也都继承了过来。在阅读源码的时候千万不要直接的去阅读HashSet在阅读之前最好先把HashMap看了。在阅读HashMap的时候最好结合着1.7版本的源码一起看。 private transient HashMapE,Object map; 上面说到HashSet是由HashMap来实现的而存储的数据作为HashMap的K,V统一就是PRESENT // Dummy value to associate with an Object in the backing Mapprivate static final Object PRESENT new Object(); 3.构造方法 无参构造方法直接创建一个HashMap采用无参构造方法的默认属性上篇文章说过默认容量是16加载因子是0.75 指定容量 指定容量和加载因子加载因子在HashMap中用来计算容量默认的就是总容量*加载因子默认的加载因子是0.75 指定集合元素 4.添加 可以看出HashSet使用put进行添加元素要添加的元素作为mapd的Key 而value则默认的就是PRESENT。上篇文章介绍过HashMap的put方法如果插入的值的Key不存在则返回null否则就返回已经存在的值所以这里做了一个判断。是不是很简单。 5.查找 查找元素调用了HashMap的containsKey方法如果存在返回true不存在返回false。 6.删除 删除方法也是调用map的remove方法看到这里我们看出HashSet全部是依赖于HashMap。 7.迭代方法 也是通过Map来实现使用keySet来返回一个key的Iterator。 8.总结 其实HashSet的一些东西都是用HashMap来实现的如果HashMap的源码已经阅读过的话基本上没有什么问题。这可能是我写的最轻松的一篇问文章哈哈哈哈哈 转载于:https://www.cnblogs.com/Scramblecode/p/11224051.html