HashSet集合存储数据的结构和HashSet集合存储元素不重复的原理
HashSet集合存储数据的结构

HashSet集合存储元素不重复的原理
//创建HashSet集合对象
Hashset<String> set = new HashSet<>();
string s1 = new String(original: "abc") ;
string s2 = new String( original: "abe");
set.add(s1);
set.add(s2);
set.add(“重地”");
set. add(“通话”);
set.add( "abc");
system.out. print1n( set);//[重地,通话,abc]
Set集合在调用add方法的时候add方法会调用元素的hashCode方法和equals方法,判断元素是否重复
set.add( s1);
add方法会调用s1的hashCode方法计算字符电"abe“的哈希值哈希值是96354在集合中找有没有96354这个哈希值的元素发现没有
就会把s1存储到集台中
set.add(s2);
add方法会调用s2的hashcode方法计算字符串"abe"的哈希值,哈希值是96354在集台中找有没有96354这个哈希值的元袁,发现有(哈希冲突
s2会调用equals方法和哈希值相同的元素进行比较s2.equals(s1),返回true两个元素的哈希值相同,equals方法返回true,认定两个元素相同
就不会把s2存储到集台中
set.add《”重地”);
add方法会调用"重地""的hashcode方法计算字符电"重地"的哈希值哈希值是1179395在集合中找有没有1179395这个哈希值的元素发现没有
就会把"重地"存储到集台中
set.add("通话");
add方法会调用"通话"的hashCode方法计算字符电"通话”的哈希值哈希值是1179395在集合中找有没有1179395这个哈希值的元素,发现有(哈希冲突)
"通话"会调用equals方法和哈希值相同的元素进行比较"通话".equals("重地""),返回false两个元素的哈希值相同,equals方法返回false,认定两个元袁不同
就会把"通话"存储到集台中

HashSet集合存储数据的结构和HashSet集合存储元素不重复的原理的更多相关文章
- Java学习:Set接口与HashSet集合存储数据的结构(哈希表)
Set接口 java.util.Set接口 extends Collection接口 Set接口的特点: 不允许存储重复的元素 没有索引,没有带索引的方法,也不能使用普通的for循环遍历 java.u ...
- HashSet集合存储数据的结构(哈希表)和Set集合存储㢝不重复的原理
HashSet集合存储数据的结构(哈希表) Set集合存储㢝不重复的原理 前提:存储的元素必须重写hashCode方法和equals方法
- 使用Properties集合存储数据,遍历取出Properties集合中的数据和Properties集合中的方法store和load
package com.yang.Test.PropertiesStudy; import java.io.FileWriter; import java.io.IOException; import ...
- 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_06 Set集合_3_HashSet集合存储数据的结构
特点就是查询速度快 jdk1.8以后,如果链表的长度超过了8位.就会把转成红黑树,也是为了提高查询的效率
- 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_06 Set集合_4_Set集合存储元素不重复的原理
set集合元素为什么不能重复 集合重写了toString的方法所以打印是里面的内容 往里面存了三次abc 哈希表,初始容量是16个 set集合存储字符串的时候比较特殊 横着是数组,竖着就是链表结构.跟 ...
- c#---部分;把数组或者结构体存入集合里,然后再从集合中取出之后,输出;foreach既可以用到提取数组重点额数据,也可以提取集合中的数据(前提是集合中的元素是相同数据类型)
1.输入班级人数,统计每个人的姓名,性别,年龄:集合与数组 //Console.Write("请输入班级人数:"); //int a = int.Parse(Console.Rea ...
- InnoDB数据页结构
前言 关于数据库我们知道是通过内存对磁盘进行操作的,也知道数据会落实到磁盘上,但是数据在磁盘上的存储结构可能大家还不是很清楚. MySQL服务器上负责对表中的数据的读取和写入的工作的部分是存储 ...
- 为什么选择b+树作为存储引擎索引结构
为什么选择b+树作为存储引擎索引结构 在数据库或者存储的世界里,存储引擎的角色一直处于核心位置.往简单了说,存储引擎主要负责数据如何读写.往复杂了说,怎么快速.高效的完成数据的读写,一直是存储引擎要解 ...
- java的缓冲流及使用Properties集合存取数据(遍历,store,load)
缓冲流 概述 字节缓冲流:BufferedInputStream,BufferedOutputStream 字符缓冲流:BufferedReader,BufferedWriter 缓冲流原理 缓冲区是 ...
随机推荐
- 聊聊buffer和cache的区别以及是什么?
buffer 众所周知,想把数据写入磁盘,肯定要先把数据文件读到内存中,当修改完这个文件时,不会立即写入磁盘,为了减少磁盘IO,提高性能,所有会留存一段时间再写入磁盘,这就是buffer cache ...
- IOC简介 -Bean的作用域 创建对象
创建对象 创建对象时默认使用无参构造器,无论对象在容器中后续是否被使用, 都会先实例化对象 . (婚介网站,里面人都是先存在的,到时直接牵手就行) 也可以使用以下方法,使用有参构造器来创建对象 根据参 ...
- SQL注入之information_schema
在学习SQL注入时, 经常拿出来的例子就是PHP+MySQL这一套经典组合. 其中又经常提到的>=5.0版本的MySQL的内置库: information_schema 简单看一下informa ...
- 一个程序的自我修养「GitHub 热点速览 v.22.19」
一个程序要诞生涉及前后端技术,比如,你可以用可视化网页搭建工具 tmagic-editor 完成前端部分,而后端部分的数据库以及数据处理可能就要用到 jsonhero-web 和 directus.知 ...
- WPF 制作雷达扫描图
实现一个雷达扫描图. 源代码在TK_King/雷达 (gitee.com),自行下载就好了 制作思路 绘制圆形(或者称之轮) 绘制分割线 绘制扫描范围 添加扫描点 具体实现 首先我们使用自定义的控件. ...
- 拯救一切强迫症 - 读《编写可维护的 JavaScript》(一)
拯救一切强迫症 - 读<编写可维护的 JavaScript>(一) 本文写于 2020 年 4 月 24 日 我在小学的时候就有接触过编程,所以读大一的时候 C 语言还算是轻车熟路.自然会 ...
- ucontext的简单介绍
简介 结构体 函数 getcontext setcontext makecontext swapcontext 简介 ucontext.h是GNU C库的一个头文件,主要用于用户态下的上下文切换.需要 ...
- Python实现将csv文件转化为html文件
核心技术: Pandas 需要转化的csv文件(business.csv): 源代码: import pandas as pd f=pd.read_csv("business.csv&quo ...
- ArrayList常用Api分析及注意事项
数组(定长,有序的,随机访问).ArrayList是Java在数组的基础上进行衍生出来的Java里的一种数据结构,它在拥有数据的特性之外,增加了可变性 (动态数组). 属性 属性 备注 DEFAULT ...
- Stream.toList()和Collectors.toList()的性能比较
昨天给大家介绍了Java 16中的Stream增强,可以直接通过toList()来转换成List. 主要涉及下面这几种转换方式: list.stream().toList(); list.stream ...