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()
相关推荐
倚肆1 小时前
Spring Boot CORS 配置详解:CorsConfigurationSource 全面指南
java·spring boot·后端
q***72191 小时前
Spring Boot(快速上手)
java·spring boot·后端
CoderYanger1 小时前
C.滑动窗口——1423. 可获得的最大点数
java·开发语言·算法·leetcode·1024程序员节
Swift社区1 小时前
StackOverflowError 栈溢出的原因与实战解决方案
java·spring boot·spring
Rock_yzh1 小时前
LeetCode算法刷题——128. 最长连续序列
数据结构·c++·算法·哈希算法
字节拾光录1 小时前
手机号存储避坑指南:从20亿级数据库实践看,为什么VARCHAR才是终极答案
java·数据库·oracle
p***97611 小时前
SpringBoot(7)-Swagger
java·spring boot·后端
j***29482 小时前
springboot集成onlyoffice(部署+开发)
java·spring boot·后端
叫致寒吧6 小时前
Tomcat详解
java·tomcat