重学java 55. 集合 Set接口
我救自己万万次,铮铮劲草,绝不动摇
—— 24.6.2
一、Set集合介绍
Set和Map密切相关的
Map的遍历需要先变成单列集合,只能变成set集合
二、HashSet集合的介绍和使用
1.概述
HashSet是Set接口的实现类
2.特点
a、元素唯一
b、元素无序
c、无索引
d、线程不安全
3.数据结构:哈希表
a、jdk8之前:哈希表 = 数组 + 链表
b、jdk8之后:哈希表 = 数组 + 链表 + 红黑树
加入红黑树的目的:查询速度快
4.方法
和collection一样
5.遍历
a、增强for
b、迭代器
package S87Set;import java.util.HashSet; import java.util.Iterator;public class Demo241HashSet {public static void main(String[] args) {HashSet<String> set = new HashSet<>();set.add("张三");set.add("李四");set.add("王五");set.add("赵六");set.add("田七");// 读取顺序无序System.out.println(set);// 遍历 增强forfor (String s : set) {System.out.println(s);}System.out.println("——————————————————————————");// 迭代器Iterator<String> iterator = set.iterator();while (iterator.hasNext()) {System.out.println(iterator.next());}} }
三、LinkedHashSet的介绍以及使用
1.概述
LinkedHashSet extends HashSet
2.特点
a、元素唯一
b、元素有序
c、无索引
d、线程不安全
3.数据结构
哈希表 + 双向链表
4.使用
和HashSet一样
package S87Set;import java.util.Iterator; import java.util.LinkedHashSet;public class Demo242LinkedHashSet {public static void main(String[] args) {LinkedHashSet<String> set = new LinkedHashSet<>();set.add("张三");set.add("李四");set.add("王五");set.add("赵六");set.add("田七");// 读取顺序无序System.out.println(set);// 遍历 增强forfor (String s : set) {System.out.println(s);}System.out.println("——————————————————————————");// 迭代器Iterator<String> iterator = set.iterator();while (iterator.hasNext()) {System.out.println(iterator.next());}} }
四、哈希值
1.概述:
是由计算机算出来的一个十进制数,可以看做是对象的地址值
2.获取对象的哈希值,使用的是object中的方法
public native int hashcode()
3.注意:
如果重写了hashcode方法,那计算的就是对象内容的哈希值了
如果不重写hashcode方法,默认计算对象的哈希值
五、字符串的哈希值如何计算出来
直接跑到stringLatin1.hashcode(value)底层源码,
计算abc的哈希值 —> 0xff这个十六进制对应的十进制255任何数据和255做&运算,都是原值
第一圈:
h=31*0+97 =97
第二圈:
h=31*97+98 = 3105
第三圈:
h=31*3105+99=96354
问题:在计算哈希值的时候,有一个定值就是31,为啥?
31是一个质数,31这个数通过大量的计算,统计,认为用31,可以尽量降低内容不一样但是哈希值一样的情况
内容不一样,哈希值一样(哈希冲突,哈希碰撞)
六、HashSet的存储去重复的过程
1.先计算元素的哈希值(重写hashCode方法),在比较内容(重写equals方法)
2.先比较哈希值,如果哈希值不一样,存储
3.如果哈希值一样,再比较内容
a.如果哈希值一样,内容不一样,存
b.如果哈希值一样,内容也一样,去重复package S88Hash;import java.util.HashSet;public class Demo244HashTest {public static void main(String[] args) {HashSet<Object> set = new HashSet<>();set.add("abc");set.add("通话");set.add("重地");set.add("abc");System.out.println(set); // [通话, 重地, abc]} }
七、Hashset存储自定义类型如何去重复
1.如果Hashset存储自定义类型,如何去重复呢?重写hashcode和equals方法,让Hashset比较属性的哈希值以及属性的内容
2.如果不重写hashcode和equals方法,默认调用的是object中的,不同的对象,肯定哈希值不一样,equals比较对象的地址值也不一样,所以此时即使对象的属性值一样,也不能去重复
相关文章:
重学java 55. 集合 Set接口
我救自己万万次,铮铮劲草,绝不动摇 —— 24.6.2 一、Set集合介绍 Set和Map密切相关的 Map的遍历需要先变成单列集合,只能变成set集合 二、HashSet集合的介绍和使用 1.概述 HashSet是Set接口的实现类 2.特点 a、元素唯一 b、元素无序 c、无索引…...
spring项目修改时间格式
一、配置方式 在application.yml上添加 spring:jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT8 二、注解方式 1、添加依赖 <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId&…...
每周统计-20240531
用于测试程序的稳定性: 龙虎榜: 成交额: 封成比: 收盘前放量: 开盘抢筹: 封单额:...
【工具】探索 DOU:每用户数据使用量
缘分让我们相遇乱世以外 命运却要我们危难中相爱 也许未来遥远在光年之外 我愿守候未知里为你等待 我没想到为了你我能疯狂到 山崩海啸没有你根本不想逃 我的大脑为了你已经疯狂到 脉搏心跳没有你根本不重要 🎵 邓紫棋《光年之外》 什么是 DOU…...
JVM之垃圾判断的详细解析
垃圾判断 垃圾介绍 垃圾:如果一个或多个对象没有任何的引用指向它了,那么这个对象现在就是垃圾 作用:释放没用的对象,清除内存里的记录碎片,碎片整理将所占用的堆内存移到堆的一端,以便 JVM 将整理出的内…...
07- Redis 中的 HyperLogLog 数据类型和应用场景
1. 介绍 Redis HyperLogLog 是 Redis 2.8.9 版本新增的数据类型,是一种用于【统计基数】的数据集合类型,基数统计就是指统计一个集合中不重复的元素个数。但要注意,HyperLogLog 的统计规则是基于概率完成的,不是非常准确…...
jenkins应用2-freestyle-job
1.jenkins应用 1.jenkins构建的流程 1.使用git参数化构建,用标签区分版本 2.git 拉取gitlab远程仓库代码 3.maven打包项目 4.sonarqube经行代码质量检测 5.自定义制作镜像发送到远程仓库harbor 6.在远程服务器上拉取代码启动容器 这个是构建的整个过程和步骤…...
K210视觉识别模块学习笔记1:第一个串口程序_程序烧录与开机启动
今日开始学习K210视觉识别模块:简单的认识与串口程序 亚博智能的K210视觉识别模块...... 固件库版本: canmv_yahboom_v2.1.1.bin 既然K210作为一个视觉识别外设模块来使用,我认为第一个程序 就没必要学点灯之类的了,直接学习串口如何配置开始为妥&…...
[数据集][目标检测]脑溢血检测数据集VOC+YOLO格式767张2类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):767 标注数量(xml文件个数):767 标注数量(txt文件个数):767 标注类别…...
如何借VR之手,让展厅互动更精彩?
VR虚拟现实技术以其卓越的沉浸式体验为特点,引领用户踏入一个全新的虚拟世界,正因如此,它开始被广泛应用于展厅、商业等多个领域。那么,今天,让我们就来了解一下这种技术是如何为展厅带来精彩互动体验的吧!…...
微信小程序如何使用地图
微信小程序使用地图功能时,主要涉及到地图组件的引入、配置、以及相关的API调用。以下是一个详细的使用指南: 1. 引入地图组件 在微信小程序的.wxml文件中,通过<map>标签引入地图组件。你可以设置地图的经纬度、缩放级别、控件等属性…...
力扣 287. 寻找重复数
给定一个包含 n 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。假设 nums 只有 一个重复的整数 ,返回 这个重复的数 。你设计的解决方案必须 不修改 数组 nums 且只用常量…...
怎样清理Mac存储空间 苹果电脑内存不够用怎么办 苹果电脑内存满了怎么清理
在使用 Mac 电脑的过程中,用户经常会遇到磁盘空间不足的困扰,这时候就需要寻找有效的方法来清理苹果电脑内存了。 清理Mac存储空间可以通过多种方法进行,以确保你的Mac能够高效运行并释放宝贵的存储空间。以下是一些有效的清理和优化方法&am…...
网络遗忘权的实现方法
网络遗忘权的实现方法 目录 从禁书说起 从销毁硬件信息的方法得到的启示 现在网络遗忘权的实现方法 从禁书说起 古代有禁书的需求,直接的方法就是贴出告示,强行收缴,然后付之一炬. 这个方法的问题在于只要有一个人敢冒死藏书,再次手抄或者是印刷,就 会让之前的禁书努力,付…...
【Python内功心法】:深挖内置函数,释放语言潜能
文章目录 🚀一、常见内置函数🌈二、高级内置函数⭐1. enumerate函数👊2. eval函数❤️3. exec函数💥4. eval与exec 中 globals与locals如何用☔4-1 globals 参数🎬4-2 locals 参数 ❤️5. filter函数👊6. z…...
JS-09-es6常用知识1
目录 1 模板字符串 1.1 模板字符串基本用法 1.2 模板字符串解决了一些痛点 2 解构赋值 2.1 对象的解构赋值 2.2 函数参数的解构赋值 2.3 补写:属性的简写 3 rest参数 3.1 arguments 3.2 rest参数 3.3 补充:判断数据类型 4 箭头函数 4.1 …...
SpringBoot 基础之自动配置
SpringBoot 自动配置 SpringBoot 通过 自动配置 简化了大量的繁复的配置信息。 启动类 Application 中有两处特别之处: 注解:SpringBootApplication run 方法:SpringApplication.run(…) SpringBootApplication 注解至少等价于以下三个注…...
Oracle dblink 发现Network 等待事件的分析 enq: KO - fast object checkpoint
所有的sql 通过dblink 查询全部等待中, 同一个SQL 20多个session 在跑,等待事件network,可能怀疑是不是网络断开了,导致没有返回 执行sql 如下: BEGIN Xdblink ; END; 去到dblink 所在的db,发现20多个sql在…...
SpringMVC:向三大域对象存数据
1. 简介 Servlet中的三个域对象 请求域:request会话域:session应用域:application 主要是通过:setAttribute getAttribute方法来完成在域中数据的传递和共享。 点击跳转Servlet详细概念 // 向域中存储数据 void setAttribute(St…...
如何用python做一个用户登录界面——浔川python社
1 需解决的问题: 1.1如何用python做一个用户登录界面? 1.2需要用到哪些库、模块? 2 问题解决: 2.1 回答 1.1 :合理即可,无标准回答。 2.2 回答 1.2 :tk库(缩写)、GUL界面…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

