Java集合之HashSet

来源:互联网 发布:java微信客服系统源码 编辑:程序博客网 时间:2024/06/05 07:33

HashSet 实现了Set接口,它的底层是HashMap的key集合,所以它私有属性之一如下:
private transient HashMap<E,Object> map;

构造方法

1. 无参构造

public HashSet() {        map = new HashMap<>();}

2. 带参构造

public HashSet(Collection<? extends E> c) {        map = new HashMap<>(Math.max((int) (c.size()/.75f) + 1, 16));        addAll(c);}public HashSet(int initialCapacity, float loadFactor) {        map = new HashMap<>(initialCapacity, loadFactor);}public HashSet(int initialCapacity) {        map = new HashMap<>(initialCapacity);}HashSet(int initialCapacity, float loadFactor, boolean dummy) {    //其实我不是很清楚这个布尔值放这里有啥用,望告知。        map = new LinkedHashMap<>(initialCapacity, loadFactor);}

常用方法

1. size()

public int size() {        return map.size();}

返回map的size。

2. contains(Object o)

public boolean contains(Object o) {        return map.containsKey(o);}

查看map中是否含有这个key。

3. add(E e)

private static final Object PRESENT = new Object();public boolean add(E e) {        return map.put(e, PRESENT)==null;}

往map中放入一对key为e的键值对,其中的值为PRESENT,由此看出,一个HashSet底层的map所有的key都对应同一个value,即多对一。

4. remove(Object o)

public boolean remove(Object o) {        return map.remove(o)==PRESENT;}

直接调用map的remove方法。

0 0
原创粉丝点击