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()
相关推荐
前端小雪的博客.5 分钟前
Java的面向对象:封装详解(0基础入门版)
java·java入门·java面向对象·封装详解·java封装·0基础学java·getter和setter
左左右右左右摇晃8 分钟前
Java并发——死锁
java·开发语言·spring
ShayneLee814 分钟前
jar-替换依赖包
java·jar
standovon21 分钟前
Spring Boot+Vue项目从零入手
java
爱丽_21 分钟前
ThreadLocal 机制:弱引用 Entry、内存泄漏、线程池复用与线上排查
java·jvm·算法
前端小雪的博客.22 分钟前
Java的面向对象:方法重写(0基础入门版)
java·java基础·java入门·override·方法重写·java面向对象·方法重写与重载的区别
殷紫川24 分钟前
Java 工程化体系:代码规范与团队协作全链路标准
java·架构·代码规范
半瓶榴莲奶^_^26 分钟前
java模式
java·开发语言
heimeiyingwang43 分钟前
【架构实战】微服务架构核心概念与演进
java·微服务·架构
Memory_荒年1 小时前
当餐厅后厨也懂分布式:SpringBoot中的重试、限流、熔断与幂等的“四重奏”
java·后端·spring