您的位置:首页 > 编程语言 > Java开发

JAVA集合源码分析系列:HashSet源码分析

2016-08-29 22:19 591 查看
HashSet

分析

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方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: