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

相关推荐
喵手1 小时前
玩转Java网络编程:基于Socket的服务器和客户端开发!
java·服务器·网络
再见晴天*_*2 小时前
SpringBoot 中单独一个类中运行main方法报错:找不到或无法加载主类
java·开发语言·intellij idea
lqjun08274 小时前
Qt程序单独运行报错问题
开发语言·qt
hdsoft_huge5 小时前
Java & Spring Boot常见异常全解析:原因、危害、处理与防范
java·开发语言·spring boot
风中的微尘6 小时前
39.网络流入门
开发语言·网络·c++·算法
雨白6 小时前
Java 多线程指南:从基础用法到线程安全
android·java
Hungry_Shark6 小时前
IDEA版本控制管理之使用Gitee
java·gitee·intellij-idea
赛姐在努力.6 小时前
《IDEA 突然“三无”?三秒找回消失的绿色启动键、主菜单和项目树!》
java·intellij-idea
未来之窗软件服务6 小时前
幽冥大陆(二)RDIFSDK 接口文档:布草洗涤厂高效运营的技术桥梁C#—东方仙盟
开发语言·c#·rdif·仙盟创梦ide·东方仙盟
猎板PCB黄浩7 小时前
从废料到碳减排:猎板 PCB 埋容埋阻的绿色制造革命,如何实现环保与性能双赢
java·服务器·制造