Java数据结构源码分析-HashSet
来源:互联网 发布:mysql strict mode 编辑:程序博客网 时间:2024/05/22 00:32
1.HashSet
HashSet和HashMap在本质上是一样的,其实HashSet是一种特殊的HashMap,其所有的Entry中的value都是一个私有的对象。private static final Object PRESENT = new Object();
public HashSet() { map = new HashMap<>(); }public boolean add(E e) { return map.put(e, PRESENT)==null; }public Object clone() { try { HashSet<E> newSet = (HashSet<E>) super.clone(); newSet.map = (HashMap<E, Object>) map.clone(); return newSet; } catch (CloneNotSupportedException e) { throw new InternalError(); } }private void writeObject(java.io.ObjectOutputStream s) throws java.io.IOException { // Write out any hidden serialization magic s.defaultWriteObject(); // Write out HashMap capacity and load factor s.writeInt(map.capacity()); s.writeFloat(map.loadFactor()); // Write out size s.writeInt(map.size()); // Write out all elements in the proper order. for (E e : map.keySet()) s.writeObject(e); }
从如上结果可以看出HashSet都是通过HashMap来实现的,因此只需要了解HashMap的原理,将HashSet当做value是同一个对象的HashMap就可以了。
参考:http://blog.csdn.net/cweeyii/article/details/51583154
0 0
- Java数据结构源码分析-HashSet
- 《Java源码分析》:HashSet
- 《Java源码分析》:HashSet
- Java源码分析之HashSet
- java源码分析之HashSet
- java源码分析之HashSet及LinkedHashSet
- java 源码分析之HashSet及LinkedHashSet
- Java集合系列之HashSet源码分析
- java-HashMap和HashSet源码分析
- java源码分析之HashSet及LinkedHashSet
- java源码分析之HashSet和LinkedHashSet
- java HashSet HashMap(源码分析)
- Java集合---HashSet的源码分析
- Java集合---HashSet的源码分析
- Java基础——HashSet源码分析
- java集合(5):HashSet源码分析
- Java集合---HashSet的源码分析
- Java集合---HashSet的源码分析
- shiro进行验证
- Java并发编程-线程局部变量(ThreadLocal)
- html&&html5(1)
- Mybatis常用jdbc类型
- 创建一个类实现读取一个文件中的每一行显示出来。
- Java数据结构源码分析-HashSet
- leetcode 6. ZigZag Conversion
- 大型网站的架构设计详解1
- 沈向洋谈做研究的那些事儿
- vsftpd安装配置[ubuntu下亲测可用]
- C中进程管理函数
- 多态
- 机房收费系统调错总结(一)
- ml笔记01