本身实现HashSet

HashSet的实现相对比较简单。它强依赖于HashMap,包括底层数据实际上就是存储于HashMap,因为HashMap在哈希碰撞下,若是value值相同,那么将会覆盖该value,HashSet正是利用这一特性来达到元素惟一的。spa

一属性code

定义一个HashMap装载数据,定义一个final的Object来作为HashMap的value。blog

public class MyHashSet<E> {
    
    private transient MyHashMap<E, Object> map;
    
    private transient final Object value = new Object();

}

添加构造方法rem

public MyHashSet(){
        map = new MyHashMap<E, Object>();
    }
    
    public MyHashSet(int initCount){
        map = new MyHashMap<E, Object>(initCount);
    }
    
    public MyHashSet(int initCount, float loadFactor){
        map = new MyHashMap<E, Object>(initCount, loadFactor);
    }

二方法it

1增长class

返回空表示添加成功,不为空表示已经存在该元素。map

public boolean add(E e){
        return map.put(e, value) == null;
    }

 2删除迭代器

public void remove(E e){
        map.remove(e);
    }

3迭代float

直接从HashMap获得迭代器。方法

public class MyHashSet<E> implements Iterable<E>{  
    public Iterator<E> iterator(){
        return map.keySet().iterator();
    }  
}
相关文章
相关标签/搜索