Java集合·12·HashSet详解

一、概述

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

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

Set

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

继承Collection,未添加API。

AbstractSet

继承自AbstractCollection,实现Set接口。

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

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

二、特点

  • 不含重复元素
  • 无序
  • 非线程安全
  • iterator是fail-fast的

三、数据结构

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

transient HashMap> 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 iterator() {
    return backingMap.keySet().iterator();
}

你可能感兴趣的:(Java集合·12·HashSet详解)