Java集合·12·HashSet详解

2018-03-26  本文已影响0人  Lynn_R01612x2

一、概述

是一个不含重复元素、无序的集合类。作用为提供无序的Set集合。

继承AbstractSet,实现了Set、Cloneable、Serializable接口。

Set

Set是不含重复元素的集合类。

继承Collection,未添加API。

AbstractSet

继承自AbstractCollection,实现Set接口。

实现了equal、hashcode、remove函数接口,减少Set实现类的重复编码。

子类仅需实现iterator()和size()方法,add()方法默认不支持

二、特点

三、数据结构

依赖HashMap,使用HashMap<E, HashSet<E>>存储数据。

transient HashMap<E, HashSet<E>> backingMap;

四、实现要点

1. 基本方法

添加

    @Override
    public boolean add(E object) {
        return backingMap.put(object, this) == null;
    }

删除

仅支持通过Iterator删除

2. 访问方法

提供一种访问方式:Iterator

Iterator(exquisitely)

返回HashMap的keySet的Iterator

@Override
public Iterator<E> iterator() {
    return backingMap.keySet().iterator();
}
上一篇下一篇

猜你喜欢

热点阅读