Java HashSet介绍、使用方法详解及底层实现分析

目录

1. HashSet介绍

2. 使用方法

2.1 添加元素 

2.2  判断元素是否存在

2.3 删除元素 

2.4 计算集合元素个数

2.5 迭代HashSet

 3. 底层实现分析

1. HashSet介绍

        HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。HashSet 允许有 null 值。HashSet 是无序的,即不会记录插入的顺序。 HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 必须在多线程访问时显式同步对 HashSet 的并发访问。 HashSet 实现了 Set 接口。

        HashSet 中的元素实际上是对象,一些常见的基本类型可以使用它的包装类。

HashSet 类位于 java.util 包,使用前需要导入。

  import java.util.HashSet;

创建一个 HashSet 对象 set,用于保存字符串元素。

  HashSet set = new HashSet<>();

2. 使用方法

2.1 添加元素 

 

实例:

  HashSet set = new HashSet<>();
  // 添加元素
  set.add("张三");
  set.add("李四");
  set.add("张三");
  System.out.println(set);// 输出结果:[李四, 张三]
  // 张三被添加了两次,它在集合中也只会出现一次,因为集合中的每个元素都必须是唯一的。

2.2  判断元素是否存在

 

实例:

  HashSet set = new HashSet<>();
  // 添加元素
  set.add("张三");
  set.add("李四");
  // 判断元素是否存在
  System.out.println(set.contains("李四"));// 输出结果:true
  System.out.println(set.contains("王二"));// 输出结果:false

2.3 删除元素 

 

 实例:

  HashSet set = new HashSet<>();
  // 添加元素
  set.add("张三");
  set.add("李四");
  set.add("王二");
  // 删除元素,删除成功返回true,否则返回false
  System.out.println(set.remove("张三"));// 输出结果:true
  System.out.println(set);// 输出结果:[李四, 王二]

2.4 计算集合元素个数

 

 实例:

  HashSet set = new HashSet<>();
  // 添加元素
  set.add("张三");
  set.add("李四");
  set.add("王二");
  // 计算集合中元素个数
  System.out.println(set.size());// 输出结果:3

2.5 迭代HashSet

实例:

  HashSet set = new HashSet<>();
  // 添加元素
  set.add("张三");
  set.add("李四");
  set.add("王二");
  for (String s : set) {
     System.out.println(s);
  }// 输出结果:张三
               李四
               王二

 3. 底层实现分析

        HashSet 的实现是依赖于HashMap 的,HashSet 的值都是存储在HashMap中的。在HashSet 的构造法中会初始化一个HashMap对象,HashSet不允许值重复。因此,HashSet 的值是作为 HashMap的key存储在HashMap中的,当存储的值已经存在时返回 false 。

你可能感兴趣的:(java)