美文网首页
Java集合·12·HashSet详解

Java集合·12·HashSet详解

作者: Lynn_R01612x2 | 来源:发表于2018-03-26 23:52 被阅读0次

    一、概述

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

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

    Set

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

    继承Collection,未添加API。

    AbstractSet

    继承自AbstractCollection,实现Set接口。

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

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

    二、特点

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

    三、数据结构

    依赖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();
    }
    

    相关文章

      网友评论

          本文标题:Java集合·12·HashSet详解

          本文链接:https://www.haomeiwen.com/subject/mvgdcftx.html