news 2026/9/3 1:37:50

Set集合、HashSet集合的底层原理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Set集合、HashSet集合的底层原理

Set集合

注意:
1、Set要用到的常用方法,基本上就是Collection提供的
2、自己几乎没有额外新增一些常用功能

packagecom.itheima.demo1hashset;importjava.util.HashSet;importjava.util.LinkedHashSet;importjava.util.Set;importjava.util.TreeSet;publicclassSetDemo1{//目标:认识set家族集合的特点publicstaticvoidmain(String[]args){//创建一个Set集合。无序无重复无索引Set<String>set=newHashSet<>();//一行经典代码set.add("hello");set.add("world");set.add("java");set.add("hello");System.out.println(set);//[world, java, hello]System.out.println("=================================");//创建一个LinkedHashSet集合。有序无重复无索引Set<String>set2=newLinkedHashSet<>();set2.add("hello");set2.add("world");set2.add("java");set2.add("hello");System.out.println(set2);//[hello, world, java]System.out.println("=================================");//创建一个TreeSet集合。排序(按照升序排序),不重复,无索引Set<Double>set3=newTreeSet<>();set3.add(1.0);set3.add(1.2);set3.add(1.5);set3.add(1.0);System.out.println(set3);//[1.0, 1.2, 1.5]}}

HashSet集合的底层原理

哈希值:Java中每个对象都有一个哈希值,是一个int类型的随机值

System.out.println(set.hashCode());//215735942System.out.println(set2.hashCode());//215735942System.out.println(set3.hashCode());//-1935147008

1、添加一个新元素后开始第一步
2、哈希值相同但存的数据不一样的新元素与旧元素形成链表
3、存入的位置是通过哈希值计算出来的
4、新家的数据可能到数组前面,后加的数据可能在数组后面
5、只要数组中16(数组长度)*0.75(默认加载因子)=12的元素被占有,就会开始扩容成原来数组长度的2倍(32)

7、红黑树中 小的元素往左边走,大的元素往右边走
8、对象没有大小时比较哈希值大小存数据
9、红黑树本质也是一个链表
10、红黑树增删改查速度都很快,但是不能重复,不能索引,比较耗费内存


小结


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 6:08:33

实体识别技术体验课:9.9元带走3个实战案例

实体识别技术体验课&#xff1a;9.9元带走3个实战案例 引言&#xff1a;为什么你需要学习实体识别技术&#xff1f; 实体识别&#xff08;Named Entity Recognition&#xff0c;简称NER&#xff09;是自然语言处理中的一项基础技术&#xff0c;它能够从文本中自动识别出人名、…

作者头像 李华
网站建设 2026/9/2 9:51:36

医疗影像分析:DEEPLABV3+在肿瘤分割中的突破应用

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个基于DEEPLABV3的医疗影像分析系统&#xff0c;专门用于肺部CT扫描中的肿瘤分割。功能要求&#xff1a;1.支持DICOM格式输入 2.实现病灶区域自动标注 3.提供三维重建可视化…

作者头像 李华
网站建设 2026/9/3 1:10:11

AutoGLM-Phone-9B应用案例:智能车载语音助手

AutoGLM-Phone-9B应用案例&#xff1a;智能车载语音助手 随着人工智能技术在智能出行领域的深入发展&#xff0c;车载语音助手正从“能听会说”向“可思考、能感知、懂上下文”的智能交互体演进。传统语音系统受限于本地算力与模型能力&#xff0c;往往依赖云端处理&#xff0…

作者头像 李华
网站建设 2026/9/2 19:31:08

零基础教程:5分钟用Docker安装Redis

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个面向新手的Docker安装Redis教程&#xff0c;要求&#xff1a;1. 从Docker安装开始讲解 2. 分步骤演示Redis容器创建 3. 包含基础命令测试 4. 常见错误解决方法 5. 可视化工…

作者头像 李华
网站建设 2026/9/2 22:27:17

图文详解:小白也能懂的OneNote自启动关闭教程

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 制作一个交互式教学应用&#xff0c;功能包括&#xff1a;1.分步骤动画演示关闭过程 2.实时检测用户操作是否正确 3.提供常见问题解答 4.支持语音指导。要求使用HTML5开发响应式界…

作者头像 李华
网站建设 2026/9/2 23:12:24

StructBERT中文情感分析API实战:快速集成指南

StructBERT中文情感分析API实战&#xff1a;快速集成指南 1. 引言 1.1 中文情感分析的现实需求 在当前自然语言处理&#xff08;NLP&#xff09;的应用场景中&#xff0c;中文情感分析已成为企业洞察用户反馈、监控舆情动态、优化客户服务的核心技术之一。无论是电商平台的商…

作者头像 李华