标签:hashset
// HashSet的关键源码
public class HashSet<E>
extends AbstractSet<E>
implements Set<E>, Cloneable, java.io.Serializable
{
// HashSet中封装的HashMap,这个map也是数据储存的地方
private transient HashMap<E,Object> map;
//在add方法中调用map.put(key,value)方法,把要添加的元素传给key,把PRESENT传给Value
private static final Object PRESENT = new Object();
// HashSet默认的构造方法,构造了一个HashMap
public HashSet() {
map = new HashMap<>();
}
// 添加一个元素
public boolean add(E e) {
//调用map.put(key,value)方法,若添加成功,则put方法返回null,进而add方法返回true
// *****HashSet集合中添加进来的元素是存放在HashMap中的Key中,而HashMap中的Value则放一个没有任何意义的Object对象PRESENT
return map.put(e, PRESENT)==null;
}
// map.remove(key)方法,若存在该key,则返回key.value,否则返回null
public boolean remove(Object o) {
return map.remove(o)==PRESENT;
}
}
标签:hashset
原文地址:http://blog.csdn.net/wodewutai17quiet/article/details/46238841