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()
相关推荐
呱牛do it2 小时前
企业级门户网站设计与实现:基于SpringBoot + Vue3的全栈解决方案(Day 3)
java·vue
神の愛4 小时前
左连接查询数据 left join
java·服务器·前端
南境十里·墨染春水4 小时前
linux学习进展 线程同步——互斥锁
java·linux·学习
雨奔4 小时前
Kubernetes 联邦 Deployment 指南:跨集群统一管理 Pod
java·容器·kubernetes
杨凯凡4 小时前
【021】反射与注解:Spring 里背后的影子
java·后端·spring
lulu12165440784 小时前
Claude Code项目大了响应慢怎么办?Subagents、Agent Teams、Git Worktree、工作流编排四种方案深度解析
java·人工智能·python·ai编程
riNt PTIP4 小时前
SpringBoot创建动态定时任务的几种方式
java·spring boot·spring
老星*5 小时前
AI选股核心设计思路
java·ai·开源·软件开发
それども5 小时前
Comparator.comparing 和 拆箱问题
java·jvm
星晨羽6 小时前
西门子机床opc ua协议实现变量读写及NC文件上传下载
java·spring boot