# Java 初学者的`Set`教程

> 原文： [https://javabeginnerstutorial.com/core-java-tutorial/set-collection-tutorial-for-java-beginners/](https://javabeginnerstutorial.com/core-java-tutorial/set-collection-tutorial-for-java-beginners/)

`Set`是 Java 集合框架的一部分。 `Set`是`java.util`包中的一个接口。 它实现了`Collection`接口。

# 与集有关的要点

*   它不包含重复的元素。
*   一些`Set`实现对`NULL`元素有限制。

# `Set`接口的具体实现

*   `HashSet`
*   `LinkedHashSet`
*   `TreeSet`
*   `EnumSet`

# `Set`接口中的重要方法

此接口不包含任何特殊方法。 它仅继承`Collection`接口的所有方法。

# `HashSet`

*   此类是 Java 集合框架的一部分。
*   此类实现`Set`接口。
*   它由哈希表支持。
*   它是无序的。 （随着时间的推移，顺序不可预测）
*   基本操作（如添加，删除，包含和大小）的恒定时间性能。
*   它不同步。
*   `Iterator`方法返回的迭代器为快速失败。

## 构造器

*   **`HashSet(Collection<? extends E> c)`**：构造一个新集合，其中包含指定集合中的元素。
*   **`HashSet(int initialCapacity, float loadFactor)`**：构造一个新的空集； 支持的`HashMap`实例具有指定的初始容量和指定的负载系数。
*   **`HashSet(int initialCapacity)`**：构造一个新的空集。

# `LinkedHashSet`

*   元素的顺序是可预测的。
*   它维护遍历所有条目的双链表。
*   元素的顺序将与插入顺序相同。
*   它允许`NULL`值。
*   与`HashSet`一样，它为基本操作提供恒定的时间性能。
*   链表上的迭代时间与大小成正比。
*   初始容量和负载因子决定`LinkedHashSet`的性能。
*   它不同步。
*   此类的`Iterator`方法返回的迭代器为快速失败。

## 构造器

*   **`LinkedHashSet(int initialCapacity, float loadFactor)`**：构造一个具有指定初始容量和负载因子的新的空链接哈希集。
*   **`LinkedHashSet(int initialCapacity)`**：构造一个新的，空的，具有指定初始容量和默认加载因子 0.75 的链接哈希集。
*   **`LinkedHashSet()`**：构造一个新的空链接哈希集，默认初始容量为 16，负载因子为 0.75。
*   **`LinkedHashSet(Collection<? extends  E> c）`**：构造一个新的链接哈希集，其元素与指定的集合相同。
