JAVA集合源码分析系列:HashSet源码分析
2016-08-29 22:19
591 查看
HashSet
它是由HashMap实现的,不保证元素的顺序,而且HashSet允许使用 null 元素。
从构造方法可以很轻松的看出,HashSet的底层是一个HashMap,理解了HashMap后,这里没什么可说的。
看到这里就明白了,和我们前面说的一样,HashSet是用HashMap来保存数据,而主要使用到的就是HashMap的key。
利用HashMap的put方法实现add方法
利用HashMap的remove方法实现remove方法
分析
HashSet是一个没有重复元素的集合。它是由HashMap实现的,不保证元素的顺序,而且HashSet允许使用 null 元素。
HashSet的父类和实现的接口
public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable
构造函数
public HashSet() { map = new HashMap<>(); }
从构造方法可以很轻松的看出,HashSet的底层是一个HashMap,理解了HashMap后,这里没什么可说的。
属性
static final long serialVersionUID = -5024744406713321676L; private transient HashMap<E,Object> map; // Dummy value to associate with an Object in the backing Map private static final Object PRESENT = new Object();
看到这里就明白了,和我们前面说的一样,HashSet是用HashMap来保存数据,而主要使用到的就是HashMap的key。
行为
add方法分析
public boolean add(E e) { return map.put(e, PRESENT)==null; }
利用HashMap的put方法实现add方法
remove方法分析
public boolean remove(Object o) { return map.remove(o)==PRESENT; }
利用HashMap的remove方法实现remove方法
相关文章推荐
- Java集合系列之HashSet源码分析
- Java 集合系列16之 HashSet详细介绍(源码解析)和使用示例
- Java集合---HashSet的源码分析
- JAVA集合源码分析系列:HashMap源码分析
- Java 集合系列16之 HashSet详细介绍(源码解析)和使用示例
- Java集合---HashSet的源码分析
- Java集合(10)--HashSet源码分析
- JAVA集合源码分析系列:LinkedList源码分析
- Java 集合系列16之 HashSet详细介绍(源码解析)和使用示例
- java 中的集合(九) HashSet源码分析
- Java 集合系列16之 HashSet源码解析
- 【转】Java 集合系列16之 HashSet详细介绍(源码解析)和使用示例--不错
- Java集合---HashSet的源码分析
- Java 集合框架源码分析(七)——HashSet
- Java集合---HashSet的源码分析
- Java集合系列之HashMap源码分析
- Java集合---HashSet的源码分析
- Java 集合系列16之 HashSet详细介绍(源码解析)和使用示例
- java 中的集合(十) LinkedHashSet源码分析
- Java集合系列之LinkedList源码分析