Java 集合框架之 Set 系列
HashSet 学习总结 - 基于JDK1.8
继承关系:
上级抽象类: AbstractSet
上级接口: Set, Serializable, Cloneable
属性:
transient HashMap<E,Object> map: 存储元素map,HashSet的底层实现实际是使用了HashMap
Object PRESENT = new Object(): 此Object对象作为map的所有key的共同value
构造方法: 其大部分构造方法都是在初始化内部的HashMap,设置map初始化容量,装载因子等
增删查等方法的实现实际也是调用内置的HashMap实现的
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
public boolean remove(Object o) {
return map.remove(o)==PRESENT;
}
public void clear() {
map.clear();
}
...
总结:
HashSet是单列不可添加重复元素的集合,无序,底层实现是HashMap,不过value值做了默认存储,每次操作的是key值,非线程安全。
比较:
ArrayList:元素可重复,有序
HashSet: 元素唯一,无序,元素必须实现equals + hashcode方法