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

寒假笔记5

set接口:实现共同的特征,不能存储重复元素
HashSet:哈希(散列),本质就是一个数组,算出哈希值,数据最多存在哈希表对应的位置,存储的元素是无序

TreeSet:树,存储的元素是有序(排序的),第一个存入是根

HashSet可以实现值不能重复(key不重复原理)
底层使用两方法hashCode() / equals()
先调用hashCode(),根据内容算出一个哈希值(int类型),先用整数哈希值比较,哈希值相同说明内容也相同。哈希值也有风险:内容不同算出的哈希值相同。所以在哈希值相同的情况下再调用equals()判断内容

结论:向HashSet中添加的数据类型中,必须提供hashCode()和equals()

向HashSet中存储我们自己定义的Student类型,如果没有重写hashCode(),默认会调用Object类中的hashCode()

Object类中,public native int hashCode();是一个native修饰方法(本地方法),由操作系统提供的,读取的是对象的内存地址

所以,只要是new出来的对象,对象地址都不同。现在的需求是,对象中内容相同,就判定为重复内容。需要对Object类中的equals()和hashCode()进行重写,根据内容计算哈希值,判断内容是否相等

TreeSet:树状结构,存储的元素是有序(排序),第一个存入是根

TreeSet底层使用的是红黑树,可以自平衡避免成为链表

Map接口:实现Map接口的实现类都是双列集合,可以存储一组键值对。键不能重复,值可以重复

实现类:HashMap可以存储一个为null的键,值都可以为null。向HashMap添加元素,首先用key计算出一个哈希值,当哈希值与数组长度取模运算,结果就是该元素在数组中的位置。如果此位置上还没有元素,直接将该元素存储到一个节点上,放到数组中,如果继续添加元素,出现同位置,先比较键是否相同,如果不同把后一个元素放到前一个元素的后面形成链表。当链表长度满足一定条件时转为红黑树。

底层用到的数据结构:哈希表(数组)+链表(默认长度16)
哈希表扩容:两倍

哈希表转为红黑树条件:当链表长度等于8时,哈希表长度小于64,会先扩容哈希表。当链表长度为8,哈希表长度大于64时才会转成红黑树。

TreeMap 底层实现红黑树,可以根据键进行排序
key值的类型必须实现Comparable接口

Hashtable 也是哈希结构,方法加了锁,多线程环境下是安全的,但不能存储null键和值,且是无序的。throw new NullPointerException() 抛出异常,终止

方式1:先拿到所有的key进行循环,每次拿到一个key,然后再上map中取值(效率低,不推荐)
方式2:Collection 接口:单列集合最大接口
Collections 类:一个集合操作的工具类,包含许多静态方法

int ... c 可变长度的参数,本质上是个数组,一个参数列表中,只能有一个可变长度的参数,且必须放在末尾

http://www.jsqmd.com/news/1210899/

相关文章:

  • GPT服务订阅技术解析:支付失败、区域限制与工程实践
  • Java内存泄漏排查终极手册:工具+步骤+真实案例复盘
  • 2026年7月最新卡地亚北京双安商场维修保养服务电话 - 卡地亚官方售后中心
  • Spring Gateway+Sa-Token+Nacos构建微服务统一认证方案
  • STM32驱动DHT11温湿度传感器:单总线协议与代码实现详解
  • 2026年北京市生成式人工智能大模型备案综合分析报告
  • 【慕伏白】如何在远程公共服务器部署个人深度学习 Docker 环境(With GPUs)
  • Java工程师进阶指南:从基础到高级的技术成长路径
  • Android开发全流程:从系统架构到性能优化
  • 基于YOLOV8的道路缺陷检测系统21(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • Android模拟定位技术解析与应用实践
  • 江诗丹顿中国官方售后服务中心|服务电话和详细网点地址权威信息声明(2026年7月更新) - 江诗丹顿服务中心
  • Go模块调试总卡壳?Cursor实时诊断功能全解析,3分钟定位panic根源
  • 人形机器人城市漫步:从技术原理到社会实验的全面解析
  • 从机器人厨房打滑事件看双足机器人平衡控制与感知技术挑战
  • 内容产能不足、获客成本高,拓氪科技 AI 系统该如何赋能电商精细化运营?
  • 现实亲自给你反馈:“你真的可以。”
  • Mysql数据库表的操作
  • Uber百万级ML系统工程实录:从模型上线到稳定运行的实战路径
  • 滑动窗口算法精解:从“完美走位”问题到最短覆盖子串实战
  • 2026年7月最新青岛江诗丹顿官方售后服务网点地址及客服电话一览 - 江诗丹顿官方服务中心
  • Spring Boot+Vue全栈开发:构建安全可靠的信息托管系统
  • ComfyUI提示词调度器源码级解读:从CLIP文本编码器到KSampler调度链的11层信号传递(GitHub未公开的调度注释版)
  • MGF矩生成函数实战指南:从分布编码到工业级建模
  • 2026 API中转平台五维能力基线:动态发现、协议转换与流式保序
  • 《系统分析师教程(第2版)》笔记——第 14 章 软件实现与测试
  • 2026年AI大模型API聚合平台复盘:从手动运维到智能调度的效能跃迁之路
  • ROS 2和ROS 1的比较
  • 入局陪伴经济创业首选!2026线上店铺SaaS系统深度测评排行 - 彭拜新闻(测评)
  • 嵌入式开发中的数据类型选择与优化实践