当前位置: 首页 > news >正文

Java学习打卡-Day19-Set、HashSet、LinkedHashSet

Set 接口

  • 无序(添加和取出顺序不一致)(但取出顺序固定)。
  • 没有索引。
  • 不允许重复,所以最多一个null
  • 遍历方式
    1. 迭代器
    2. 增强for循环
    3. 不能使用普通for循环索引方式。

HashSet

  • 实现了Set接口,具有相应特征。
  • 底层实际是HashMap,HashMap底层是数组+链表/红黑树
  • add()方法会返回一个boolean值,表示添加成功/失败。
    	Set set = new HashSet();
    	set.add("Lucy");
    	set.add("Lucy");//False
    	
    	set.add(new Dog ("tom"));
    	set.add(new Dog ("tom"));//True。
    	//由于 Dog 类没有重写 equals 和 hashCode 方法,
    	//这两个 Dog 对象会被认为是不同的对象,因此这个 Dog 对象也会被添加到 set 中。
    	
    	set.add(new String("hsp"));
    	set.add(new String("hsp"));//False
    	//再次添加一个新的 String 对象,虽然它是通过 new String("hsp") 创建的,
    	//但 String 类重写了 equals 和 hashCode 方法,因此这两个 String 对象被认为是相同的,不会被重复添加。
    
  • HashSet 不允许重复元素,判断重复的依据是 equals 和 hashCode 方法。
HashSet 添加元素底层实现
  1. 先得到元素Hash值,转换成数组索引值。
  2. 找到table数组的索引位置有无元素。
  3. 没有则直接加入;有则调用equals方法比较,相同则放弃添加,不同则与下一个链接的元素比较···
HashSet 扩容机制与树化机制
  1. 首次添加元素,table扩容至16。临界值threshold=加载因子loadFactor(0.75)*16=12。
  2. 如果元素个数达到临界值12,则table扩容两倍为32。 此时临界值threshold=加载因子loadFactor(0.75)*32=24·····
  3. 如果一条链表的元素个数达到8,并且table大小达到64,则该链表将进行树化。否则仍采用扩容机制

LinkedHashSet

  • 继承了HashSet,实现了Set接口,具有相应特征。
  • 添加和取出顺序一致咯。
  • 底层实际是LinkedHashMap,LinkedHashMap底层是数组+双向链表
  • 双向链表有head和tail,每一个节点有pre和next。
  • 数组是HashMap$Node[],存放的元素是LinkedHashMap$Entry类型。

相关文章:

  • Deepseek+扣子实现xhs内容自动采集
  • 云原生服务网格:微服务通讯的量子纠缠革命
  • ICLR 2025 机器人智能灵巧操作更进一步DexTrack
  • 线上课程小程序开发制作助力机构高效运营
  • Linux复习——基础IO,认识文件描述符、软硬件链接
  • 13 - linux 内存子系统
  • iQOO手机投屏到Windows有两种方法,其中一种可远程控制
  • Python 的 ​ORM(Object-Relational Mapping)工具浅讲
  • Llinux安装MySQL教程
  • 数组连续和 - 华为OD统一考试(C卷)
  • python中的allure报告使用
  • 【Python3教程】Python3基础篇之函数
  • c语言基础编程入门练习题
  • 【Android】安卓原生应用播放背景音乐与音效(笔记)
  • LeetCode-两数之和
  • 虚拟机 | Ubuntu操作系统:su和sudo理解及如何处理忘记root密码
  • 前端样式库推广——TailwindCss
  • 清晰易懂的 Kotlin 安装与配置教程
  • 深入理解 Linux ALSA 音频架构:从入门到驱动开发
  • 2025.3.19总结
  • 深圳拟出让3宗居住用地,共计用地面积6.77公顷
  • 我的科学观|梅彦昌:科技创新关键在于能否跑得快,而不是有没有钱
  • 观察|“双雄”格局下电池制造商如何生存:加码不同技术、抢滩新赛道
  • 时隔近4年再出征!长三丙成功发射通信技术试验卫星十九号
  • 青海规范旅游包车行为:不得引导外省籍旅游包车违规驻地运营
  • 学者纠错遭网暴,人民锐评:“饭圈”该走出畸形的怪圈了