|
|
简介
Set
接口扩展自Collection
接口,规定Set
的实例不包含重复的元素。
HashSet
是一个没有重复元素的集合。- 不保证元素的顺序,允许使用null元素。
- 非线程安全的。
HashSet
是基于HashMap
来实现的,底层采用HashMap
来保存元素。
源码分析
属性
|
|
这里的PRESENT
使用new Object()
来充当value,而不直接使用null
,目的就是从根源上避免NullPointerException
,代码中也不需要取校验value是否为空。
构造方法
|
|
方法
迭代
返回HashMap
的键迭代器123public Iterator<E> iterator() { return map.keySet().iterator();}
contains
|
|
add
当set不存在这个元素时添加成功返回true,否则返回false123public boolean add(E e) { return map.put(e, PRESENT)==null;}
remove
|
|
clone
|
|
感谢:
http://www.cnblogs.com/leesf456/p/5309809.html
http://www.jianshu.com/p/c5f85e9c0098