Java复习Day23

  1. 哈希表 哈希表(散列表)是一种通过键值对直接访问的数据结构,它无需比较就能快速定位目标元素。哈希函数建立键值与存储位置的映射关系,从而提升查找效率。存储记录的数组称为哈希表。

哈希函数常见类型:

  • 除留余数法
  • 直接定址法
  • 平方取中法
  • 折叠法
  • 随机数法
  • 数学分析法

哈希冲突解决方案:

  1. 闭散列(开放定址法):发生冲突时线性探测查找下一个空位

  2. 开散列(链地址法):将冲突元素以链表形式存储在哈希桶中。极端情况下可将链表转为红黑树结构

  3. HashSet 底层实现基于HashMap,数据存储在HashMap的key上。 特点:无序、唯一 注意事项:

  • 相同hashcode会调用equals方法二次比较
  • 方法与List接口通用
  • 不支持索引操作
  1. LinkedHashSet HashSet子类,底层使用LinkedHashMap(数组+双向链表)。 特点:
  • 通过hashcode确定存储位置
  • 双向链表维护插入顺序
  • 不可重复
  • 有序且唯一
  1. TreeSet 基于二叉树结构实现:
  • 数据插入时自动排序
  • 中序遍历输出升序结果 要求:
  • 元素需实现Comparable接口
  • 或构造时传入Comparator对象
  1. 排序接口 比较方式:

  2. Comparable接口:

    • 类实现接口
    • 重写compareTo方法
    • 适用于固定排序规则
  3. Comparator接口:

    • 外部比较器
    • 重写compare方法
    • 更灵活,支持匿名类/lambda
    • 适用于动态排序需求
  4. Collections工具类 常用方法:

  • 排序:sort(), sort(list,Comparator)
  • 反转:reverse()
  • 随机:shuffle()
  • 交换:swap()
  • 查找:max(), min(), binarySearch()
  • 修改:fill(), replaceAll()
  • 统计:frequency()
  • 旋转:rotate()

线程同步方法:

  • synchronizedCollection()
  • synchronizedMap()
  • synchronizedList()
  • synchronizedSet()
相关推荐
guitarjoy21 分钟前
Compose原理 - 整体架构与主流程
java·开发语言
babicu1231 小时前
CSS Day07
java·前端·css
小鸡脚来咯1 小时前
spring IOC控制反转
java·后端·spring
怡人蝶梦3 小时前
Java后端技术栈问题排查实战:Spring Boot启动慢、Redis缓存击穿与Kafka消费堆积
java·jvm·redis·kafka·springboot·prometheus
瓯雅爱分享3 小时前
MES管理系统:Java+Vue,含源码与文档,实现生产过程实时监控、调度与优化,提升制造企业效能
java·mysql·vue·软件工程·源代码管理
鬼多不菜4 小时前
一篇学习CSS的笔记
java·前端·css
深色風信子4 小时前
Eclipse 插件开发 5.3 编辑器 监听输入
java·eclipse·编辑器·编辑器 监听输入·插件 监听输入
Blossom.1184 小时前
人工智能在智能健康监测中的创新应用与未来趋势
java·人工智能·深度学习·机器学习·语音识别
shangjg34 小时前
Kafka 如何保证不重复消费
java·分布式·后端·kafka