多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# Java 中的`HashSet`类 > 原文: [https://beginnersbook.com/2013/12/hashset-class-in-java-with-example/](https://beginnersbook.com/2013/12/hashset-class-in-java-with-example/) 此类实现`Set`接口,由哈希表(实际上是`HashMap`实例)支持。它不能保证集合的迭代顺序;特别是,它不保证订单会随着时间的推移保持不变。该类允许`null`元素。此类未同步。但是它可以像这样明确地同步:`Set s = Collections.synchronizedSet(new HashSet(...));` **关于`HashSet`的注意事项:** 1. `HashSet`不维护任何顺序,元素将以任何随机顺序返回。 2. `HashSet`不允许重复。如果您尝试在 HashSet 中添加重复元素,则旧值将被覆盖。 3. `HashSet`允许空值,但是如果插入多个空值,它仍然只返回一个空值。 4. `HashSet`是非同步的。 5. 这个类返回的迭代器是快速失败的,这意味着如果在创建迭代器之后修改了`HashSet`,迭代器会抛出`ConcurrentModificationException`,除了迭代器自己的`remove`方法之外。 ## `HashSet`示例 ```java import java.util.HashSet; public class HashSetExample { public static void main(String args[]) { // HashSet declaration HashSet<String> hset = new HashSet<String>(); // Adding elements to the HashSet hset.add("Apple"); hset.add("Mango"); hset.add("Grapes"); hset.add("Orange"); hset.add("Fig"); //Addition of duplicate elements hset.add("Apple"); hset.add("Mango"); //Addition of null values hset.add(null); hset.add(null); //Displaying HashSet elements System.out.println(hset); } } ``` 输出: ```java [null, Mango, Grapes, Apple, Orange, Fig] ``` 如您所见,输出中不存在所有重复值,包括重复的空值。 ### `HashSet`教程 * [删除`HashSet`中的所有元素](https://beginnersbook.com/2014/08/delete-all-the-elements-from-hashset/) * [如何遍历`HashSet`](https://beginnersbook.com/2014/08/how-to-iterate-over-a-sethashset/) * [将`HashSet`转换为数组](https://beginnersbook.com/2014/08/converting-a-hashset-to-an-array/) * [将`HashSet`转换为`TreeSet`](https://beginnersbook.com/2014/08/how-to-convert-a-hashset-to-a-treeset/) * [将`HashSet`转换为`List`/`ArrayList`](https://beginnersbook.com/2014/08/convert-hashset-to-a-list-arraylist/) * [`HashSet` vs `HashMap`](https://beginnersbook.com/2014/08/hashset-vs-hashmap-java/) * [`HashSet` vs `TreeSet`](https://beginnersbook.com/2014/08/difference-between-hashset-and-treeset/) ### `HashSet`方法: 1. `boolean add(Element e)`:它将元素 e 添加到列表中。 2. `void clear()`:它从列表中删除所有元素。 3. `Object clone()`:此方法返回`HashSet`的浅表副本。 4. `boolean contains(Object o)`:它检查指定的`Object o`是否存在于列表中。如果找到该对象,则返回`true`,否则返回`false`。 5. `boolean isEmpty()`:如果`Set`中没有元素,则返回`true`。 6. `int size()`:它给出了一个`Set`的元素个数。 7. `boolean(Object o)`:它从`Set`中删除指定的`Object o`。 #### 参考 [`HashSet`文档](https://docs.oracle.com/javase/7/docs/api/java/util/HashSet.html)