前言:

你有没有遇到过这样的困扰:在处理一些数据时,需要一个容器来存储元素,而这些元素又不能重复?传统的数组或ArrayList并不适合这个需求,因为它们会允许重复元素的存在。那么,我们该怎么办呢?别急,Java为我们提供了一个完美的解决方案——HashSet

HashSet是Java集合框架中的一员,专门用于存储不允许重复的元素。它非常适合我们在需要去重的场景下使用,比如存储用户ID、唯一的产品编号,或者任何其他需要确保不重复的情况。

今天,就让我们一起探讨一下HashSet,看它是如何轻松解决我们在处理数据时的重复问题的。

什么是HashSet?

HashSetSet接口的一个实现类,继承自AbstractSet,并且底层是基于哈希表(HashMap)来实现的。它的最大特点就是不允许存储重复的元素。当你向HashSet添加元素时,如果该元素已经存在,它不会被再次添加。

HashSet的特点

  • 不允许重复元素:这意味着HashSet自动去重,你无需自己编写去重代码。
  • 无序HashSet中的元素是无序的,它并不保证元素的顺序,元素的位置可能是随机的。
  • 不支持索引访问:和ArrayList不同,HashSet不支持通过索引来访问元素,只能通过迭代器或者增强for循环遍历。
  • 允许一个空元素HashSet可以存储null元素,但只能存储一个null

如何使用HashSet?

我们先从基本的创建和操作开始,逐步深入了解HashSet的用法。

创建一个HashSet

import java.util.HashSet;

public class HashSetDemo {
        
        
    public static void main(String[] args) {
        
        
        // 创建一个HashSet对象,存储String类型的元素
        HashSet<String> set = new HashSet<>();

        // 向HashSet中添加元素
        set.add("Java");
        set.add("Python");
        set.add("JavaScript");

        // 打印HashSet的内容
        System.out.println("HashSet的内容: " + set);
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.

输出:

HashSet的内容: [Java, Python, JavaScript]
  • 1.

我们可以看到,HashSet中的元素是无序的,这也就意味着,添加元素时,它们的排列顺序可能和我们添加时不同。

向HashSet中添加元素

我们可以使用add()方法将元素添加到HashSet中。如果元素已经存在,add()方法会返回false,表示元素没有被添加。

public class HashSetAdd {
        
        
    public static void main(String[] args) {
        
        
        HashSet<String> set = new HashSet<>