Java.数据结构.HashSet

目录

[1 基本概念](#1 基本概念)

[2 数据结构](#2 数据结构)

[3 常用操作](#3 常用操作)

[3.1 add(E e):向HashSet中添加元素](#3.1 add(E e):向HashSet中添加元素)

[3.2 remove(Object o):从HashSet中移除元素](#3.2 remove(Object o):从HashSet中移除元素)

[3.3 contains(Object o):判断HashSet中是否包含指定元素](#3.3 contains(Object o):判断HashSet中是否包含指定元素)

[3.4 size():返回HashSet中元素的个数](#3.4 size():返回HashSet中元素的个数)

[3.5 isEmpty():判断HashSet是否为空](#3.5 isEmpty():判断HashSet是否为空)

[4 优缺点:](#4 优缺点:)

[5 注意事项](#5 注意事项)


1 基本概念

  • 它只能存储唯一元素,不允许存储重复的元素。
  • HashSet允许存储null值,但只能存储一个null元素。

2 数据结构

  • HashSet内部使用HashMap来实现,具体来说是使用一个数组加链表(或红黑树)的方式来存储元素。
  • HashSet根据元素的hashCode值将其分配到不同的桶中,将具有相同hashCode值的元素存储在同一个桶中,然后使用链表(或红黑树)来处理hashCode冲突。

3 常用操作

3.1 add(E e):向HashSet中添加元素
java 复制代码
HashSet<String> set = new HashSet<>();  
set.add("apple");  
set.add("banana");

注意 :add 方法实际上是 boolea 类型 ,如果你要添加的 value 已经存在那么它将添加失败,返回False,反之返回 True,并不会像 HashMap 中的 put 一样后值覆盖前值。

3.2 remove(Object o):从HashSet中移除元素
java 复制代码
set.remove("banana");
3.3 contains(Object o):判断HashSet中是否包含指定元素
java 复制代码
boolean contains = set.contains("apple");  
System.out.println(contains);  // 输出: true
3.4 s``ize():返回HashSet中元素的个数
java 复制代码
int size = set.size();  
System.out.println(size);  // 输出: 1 (假设已移除banana)
3.5 isEmpty()判断HashSet是否为空
java 复制代码
boolean isEmpty = set.isEmpty();  
System.out.println(isEmpty);  // 输出: false (假设集合中有元素)

4 优缺点:

优点:快速查找(平均时间复杂度为O(1))、高效插入和删除操作

缺点:非线程安全、不保证顺序

5 注意事项

HashSet不提供 get()方法来查找集合中指定的元素,但可以使用 contains()方法来判断集合中是否包含指定元素。

相关推荐
述雾学java13 分钟前
Spring Cloud Feign 整合 Sentinel 实现服务降级与熔断保护
java·spring cloud·sentinel
保持学习ing13 分钟前
苍穹外卖day3--公共字段填充+新增菜品
java·阿里云·实战·springboot·前后端·外卖项目·阿里云文件存储
charlie11451419123 分钟前
深入理解Qt的SetWindowsFlags函数
开发语言·c++·qt·原理分析
77qqqiqi32 分钟前
正则表达式
java·后端·正则表达式
厦门德仔1 小时前
【WPF】WPF(样式)
android·java·wpf
大春儿的试验田1 小时前
高并发收藏功能设计:Redis异步同步与定时补偿机制详解
java·数据库·redis·学习·缓存
Gappsong8741 小时前
【Linux学习】Linux安装并配置Redis
java·linux·运维·网络安全
likeGhee1 小时前
python缓存装饰器实现方案
开发语言·python·缓存
hqxstudying1 小时前
Redis为什么是单线程
java·redis
whoarethenext1 小时前
使用 C++/Faiss 加速海量 MFCC 特征的相似性搜索
开发语言·c++·faiss