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()方法来判断集合中是否包含指定元素。

相关推荐
luj_17686 小时前
残熵算法实时化三大瓶颈突破
c语言·开发语言·网络·经验分享·算法
我命由我123456 小时前
Android Studio - Android Studio 自定义预览尺寸
android·java·ide·java-ee·android studio·android-studio·android runtime
不听话坏7 小时前
Ignition篇(下 一) 动态执行前的事情
开发语言·前端·javascript
likeyi077 小时前
require 和 import的区别
开发语言·前端
咖啡八杯7 小时前
GoF设计模式——迭代器模式
java·后端·设计模式·迭代器模式
远离UE47 小时前
UE5 compute shader 原子加
开发语言·c++·ue5
C+-C资深大佬7 小时前
C++ 显式类型转换详解:static_cast、dynamic_cast、const_cast、reinterpret_cast
开发语言·c++
AIGS0017 小时前
企业AI落地的关键认知:向量空间JBoltAI的本体语义平台
java·人工智能·人工智能ai大模型应用
码少女8 小时前
数据结构——哈希表的基础
数据结构·散列表
KaMeidebaby8 小时前
卡梅德生物技术快报|抗体亲和力成熟工业化调控新机制:差异性浆细胞增殖工艺优化思路
java·开发语言·人工智能·算法·机器学习·架构·spark