news 2026/3/26 21:25:14

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/3/5 16:46:56

AutoGLM-Phone-9B评估指标:移动AI标准

AutoGLM-Phone-9B评估指标&#xff1a;移动AI标准 随着移动端人工智能应用的快速普及&#xff0c;如何在资源受限设备上实现高效、精准的多模态推理成为业界关注的核心问题。AutoGLM-Phone-9B 的推出标志着轻量化多模态大模型在移动场景下的重大突破。该模型不仅继承了 GLM 系…

作者头像 李华
网站建设 2026/3/25 1:18:38

AutoGLM-Phone-9B架构解析:模块化设计的优势与应用

AutoGLM-Phone-9B架构解析&#xff1a;模块化设计的优势与应用 1. AutoGLM-Phone-9B简介 AutoGLM-Phone-9B 是一款专为移动端优化的多模态大语言模型&#xff0c;融合视觉、语音与文本处理能力&#xff0c;支持在资源受限设备上高效推理。该模型基于 GLM 架构进行轻量化设计&…

作者头像 李华
网站建设 2026/3/22 16:39:12

零基础玩转POSTMAN中文版:从安装到第一个API请求

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个POSTMAN中文版新手教学项目&#xff0c;包含&#xff1a;1. 分步安装指南 2. 界面元素详解 3. GET/POST请求创建演示 4. 响应结果查看教学 5. 常见问题解答 6. 提供练习用…

作者头像 李华
网站建设 2026/3/25 16:10:19

1小时验证创意:SMARTJAVAAI原型开发实战

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 使用SMARTJAVAAI快速开发一个共享单车管理系统的原型&#xff0c;要求1小时内完成包含用户扫码开锁、骑行计费、停车管理和支付结算的核心功能演示。系统应采用轻量级架构&#xf…

作者头像 李华
网站建设 2026/3/15 2:53:21

零基础学DOS:从cd命令到批处理编程

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 制作一个交互式DOS学习助手&#xff1a;1.分章节介绍dir/cd/md等基础命令 2.每个命令配动态示意图 3.包含新手常见错误提示框 4.最后提供5道选择题测验。输出为带导航菜单的HTML页…

作者头像 李华
网站建设 2026/3/21 9:08:08

WaitMutex -FromMsBuild -architecture=x64”已退出,代码为 8

目录 原因分析: 解决方法: ue5.5 打开项目,vs进行编译,报错: 命令“"B:\Program Files\Epic Games\UE_5.5\Engine\Build\BatchFiles\Build.bat" MetahumancharacterHeiXiEditor Win64 Development -Project="B:\project\3d_ue\down\down\Metahumanchara…

作者头像 李华