HashSet在开发过程中是很长用的,我们很多时候都会借住其不能存储重复内容进行去重;可是很多时候,我们都忽略了其实现原理。如果没有HashSet我们应该使用什么去实现同样的功能呢?
我们看看源码,可以发现原来HashSet就是对HashMap的封装。
public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable { static final long serialVersionUID = -5024744406713321676L; private transient HashMap<E,Object> map; // 固定的一个值 private static final Object PRESENT = new Object(); /** * 创建一个空的HashSet,存储对象HashMap,默认容量是16,加载因子时0.75. */ public HashSet() { map = new HashMap<>(); }