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()
相关推荐
qq_124987075322 分钟前
基于SSM的动物保护系统的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·毕业设计·ssm·计算机毕业设计
Coder_Boy_27 分钟前
基于SpringAI的在线考试系统-考试系统开发流程案例
java·数据库·人工智能·spring boot·后端
Mr_sun.28 分钟前
Day06——权限认证-项目集成
java
瑶山31 分钟前
Spring Cloud微服务搭建四、集成RocketMQ消息队列
java·spring cloud·微服务·rocketmq·dashboard
abluckyboy38 分钟前
Java 实现求 n 的 n^n 次方的最后一位数字
java·python·算法
2301_8187320640 分钟前
前端调用控制层接口,进不去,报错415,类型不匹配
java·spring boot·spring·tomcat·intellij-idea
2501_941982051 小时前
深度对比:Java、Go、Python 实现企微外部群推送,哪个效率更高?
java·golang·企业微信
马猴烧酒.1 小时前
【面试八股|JAVA多线程】JAVA多线程常考面试题详解
java·服务器·数据库
sino爱学习2 小时前
高性能线程池实践:Dubbo EagerThreadPool 设计与应用
java·后端
风生u2 小时前
activiti7 详解
java