30s搞懂HashSet基本原理与方法

目录

1.原理

[1.1 基于HashMap实现](#1.1 基于HashMap实现)

[1.2 实现了Set接口](#1.2 实现了Set接口)

[1.3 实现了序列化和可克隆化](#1.3 实现了序列化和可克隆化)

2.实现操作

[2.1 添加元素add()](#2.1 添加元素add())

[2.2 删除指定单个元素remove()](#2.2 删除指定单个元素remove())

[2.3 删除所有元素clear()](#2.3 删除所有元素clear())

[2.4 判断是否包含元素contains()](#2.4 判断是否包含元素contains())

[2.5 判断是否为空isEmpty()](#2.5 判断是否为空isEmpty())

[2.6 获得大小size()](#2.6 获得大小size())

[2.7 遍历HashSet](#2.7 遍历HashSet)

[2.7.1 使用iterator()迭代器](#2.7.1 使用iterator()迭代器)

[2.7.2 for循环遍历](#2.7.2 for循环遍历)


1.原理

1.1 基于HashMap实现

HashSet是个存数据的集合,在HashSet中只能输入一个值。

所以允许空值(默认null)

不是线程安全的(hashMap也不安全)

java 复制代码
private transient HashMap map;

// Constructor - 1
// All the constructors are internally creating HashMap Object.
public HashSet()
{
    // Creating internally backing HashMap object
    map = new HashMap();
}

// Constructor - 2
public HashSet(int initialCapacity)
{
    // Creating internally backing HashMap object
    map = new HashMap(initialCapacity);
}

// Dummy value to associate with an Object in Map
private static final Object PRESENT = new Object();

1.2 实现了Set接口

与Set一样不允许存入重复数据,而且数据是随机存取(无序的)

1.3 实现了序列化和可克隆化

便利与数据的直接存储和取出利用

2.实现操作

2.1 添加元素add()

注意重复的元素不会存入

java 复制代码
hs.add("Geek");

2.2 删除指定单个元素remove()

java 复制代码
hs.remove("B");

2.3 删除所有元素clear()

java 复制代码
hs.clear();

2.4 判断是否包含元素contains()

返回值为boolean,若存在元素返回true,为空返回false

java 复制代码
 boolean isNotEmpty = hs.contains();

2.5 判断是否为空isEmpty()

与contains恰好相反

java 复制代码
 boolean con = hs.isEmpty();

2.6 获得大小size()

java 复制代码
int size = hs.size();

2.7 遍历HashSet

2.7.1 使用iterator()迭代器

java 复制代码
/**获取对应set的迭代器*/
Iterator itr = hs.iterator();
while (itr.hasNext()){
 //TODO
}

2.7.2 for循环遍历

java 复制代码
for (String s : hs){
    //TODO
}
相关推荐
知彼解己1 分钟前
Eclipse Temurin:企业级 Java JDK 发行版的最佳实践
java·ide·eclipse
朱容zr3331332 分钟前
请解释“回表”的概念。
java·前端·数据库
不吃辣4903 分钟前
vibe coding | 如何做一个 AI 音乐生成工具?
java·人工智能·后端·ai·ai编程
Cachel wood13 分钟前
hands-on-modern-rl:动手学强化学习策略梯度reinforce
开发语言·python
NWU_LK15 分钟前
【WebFlux】第八篇 —— 自定义调度器
java
AI人工智能+电脑小能手21 分钟前
【大白话说Java面试题 第210题】【10_网络协议篇】第1题:说说 TCP/IP 网络五层模型
java·网络协议·tcp/ip·计算机网络·网络五层模型
wuminyu22 分钟前
JUC组件逐层剥离与深度剖析
java·linux·c语言·jvm·c++·算法
大黄说说23 分钟前
EF Core 避坑指南:查询慢、循环查询、并发更新问题如何解决
java·服务器·数据库
蓝斯49725 分钟前
一碰即传,重构跨设备文件分享体验
开发语言·python·重构
宁风NF28 分钟前
JavaScript:内存、垃圾回收、性能优化
开发语言·前端·javascript·学习·性能优化·es6