05-哈希表

type
status
date
slug
summary
tags
category
icon
password
 
哈希表(Hash Table)是一种基于哈希函数实现的高效键值对(key-value)存储数据结构,广泛应用于快速查找、插入和删除操作。
HashMap 工作原理简述:
  • 通过 key 的 hashCode() 计算哈希值,再通过扰动函数计算桶下标。
  • 桶为链表或红黑树(当链表过长时转换为红黑树以提高性能)。
  • 插入时,如果冲突发生,元素加入链表尾部(或红黑树)。
  • 查找时根据桶找到对应链表或树,逐个匹配 key。
  • 通过 哈希函数 将键(key)映射到数组的索引(桶 bucket)位置。
  • 理想情况下,哈希函数能将键均匀分布,查找时间接近
  • 由于哈希冲突,实际查找可能需要处理冲突。
notion image
notion image

哈希冲突处理方式

1️⃣ 链地址法(Separate Chaining)
  • 每个桶存储一个链表(或其他结构),所有哈希到同一桶的元素都放在该链表中。
  • 查找时遍历链表。
2️⃣ 开放地址法(Open Addressing)
  • 当发生冲突时,寻找下一个空桶存放元素。
  • 常用探查策略:
    • 线性探查(Linear Probing)
    • 二次探查(Quadratic Probing)
    • 双重哈希(Double Hashing)
Java 中的哈希表
特点
HashMap
线程不安全,允许 null key/value
Hashtable
线程安全,不允许 null key/value
LinkedHashMap
保持插入顺序或访问顺序
ConcurrentHashMap
高并发环境下的线程安全实现
 
上一篇
04-队列
下一篇
06-二叉树
Loading...