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

相关推荐
aningxiaoxixi3 分钟前
JAVA之 Lambda
java·开发语言
只在空想家18 分钟前
Servlet 体系结构
java·后端·servlet
ApiHug19 分钟前
ApiHug 1.3.9 支持 Spring 3.5.0 + Plugin 0.7.4 内置小插件升级!儿童节快乐!!!
java·后端·spring·api·apihug·apismart
北京_宏哥21 分钟前
🔥《刚刚问世》系列初窥篇-Java+Playwright自动化测试-17- 如何优雅地切换浏览器多窗口(详细教程)
java·前端·浏览器
异常君21 分钟前
深入理解 HashMap 的 get 方法工作原理
java·面试
异常君28 分钟前
JVM 新生代垃圾回收:避免全堆扫描的核心技术
java·jvm
用户05956611920930 分钟前
校招 java 基础面试题目及解析
java·面试
异常君32 分钟前
Windows 与 Linux 虚拟内存机制对比:设计理念与实现差异
java·linux·windows
异常君34 分钟前
深入理解 JVM 中的 Concurrent Mode Failure:原因、影响与解决策略
java·jvm
come112341 小时前
Claude 写 PHP 项目的完整小白教程
开发语言·php