java--集合--Collection--Set

来源:互联网 发布:外交部流氓回答知乎 编辑:程序博客网 时间:2024/06/04 19:03

概述

Set是一个不允许有重复元素的集合Set的实现类都是基于Map来实现的。(value是new Object())

类结构

这里写图片描述

(01) Set 是继承于Collection的接口。它是一个不允许有重复元素的集合。
(02) AbstractSet 是一个抽象类,它继承于AbstractCollection,AbstractCollection实现了Set中的绝大部分函数,为Set的实现类提供了便利。
(03) HastSet 和 TreeSet 是Set的两个实现类。
HashSet依赖于HashMap,它实际上是通过HashMap实现的。HashSet中的元素是无序的。
TreeSet依赖于TreeMap,它实际上是通过TreeMap实现的。TreeSet中的元素是有序的。

HashSet

类结构

这里写图片描述

public class HashSet<E>    extends AbstractSet<E>    implements Set<E>, Cloneable, java.io.Serializable{    private static final Object PRESENT = new Object();

分析

HashSet 是一个没有重复元素的集合。它是由HashMap实现的,不保证元素的顺序,而且HashSet允许使用 null 元素。HashSet是非同步的。

TreeSet

类结构

public class TreeSet<E> extends AbstractSet<E>    implements NavigableSet<E>, Cloneable, java.io.Serializable{    private static final Object PRESENT = new Object();

这里写图片描述

分析

TreeSet是一个没有重复元素的集合。它是由TreeMap实现的,保证元素的顺序,TreeMap是否允许null 元素(依靠comparator)。TreeMap是非同步的。