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<String> set = new HashSet<>();

2. 使用方法

2.1 添加元素 

 

实例:

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

2.2  判断元素是否存在

 

实例:

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

2.3 删除元素 

 

 实例:

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

2.4 计算集合元素个数

 

 实例:

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

2.5 迭代HashSet

实例:

  HashSet<String> 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 。

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值