Java哈希表核心知识

1 阅读2分钟

Java 核心知识补课:哈希表(HashMap)超全总结

前言

哈希表是算法刷题中最重要、最常用、效率最高的数据结构之一,尤其适用于快速查找、判断存在、统计次数等场景。本文从基础到实战,一次性吃透 HashMap 核心知识点。

 

一、什么是哈希表

哈希表(Hash Table) 是一种基于 键值对(key-value) 存储的数据结构,通过哈希函数将 key 映射到数组下标,实现 O(1) 时间复杂度 的快速查找。

简单理解: key = 名字,value = 内容 通过名字直接找到内容,不用挨个遍历。

 

二、HashMap 核心特点

  • 存储形式:key → value 键值对 ​
  • key 不可重复,value 可以重复 ​
  • 元素无序 ​
  • 非线程安全 ​
  • 查找、插入、删除效率极高:平均 O(1) ​
  • JDK 1.8+ 底层结构:数组 + 链表 + 红黑树

 

三、HashMap 最常用 6 个方法

这些是写代码时 99% 会用到的方法:

1. put(key, value) 向哈希表中存入一组键值对 ​ 2. get(key) 根据 key 获取对应的 value ​ 3. containsKey(key) 判断哈希表中是否包含指定 key ​ 4. remove(key) 根据 key 删除对应的键值对 ​ 5. size() 获取哈希表中键值对的数量 ​ 6. isEmpty() 判断哈希表是否为空

 

四、HashMap 标准定义方式

Map<Integer, Integer> map = new HashMap<>();
  • 左边:Map 接口 ​
  • 右边:HashMap 实现类 ​
  • 尖括号内指定 key 和 value 的数据类型

 

五、为什么要用 HashMap?

核心思想:空间换时间

  • 数组/列表查找:需要遍历 → O(n) ​
  • HashMap 查找:直接定位 → O(1)

适合场景:

  • 两数之和类查找问题 ​
  • 判断元素是否重复 ​
  • 统计字符/数字出现次数 ​
  • 需要快速判断是否存在某值

 

六、实战:两数之和中的 HashMap 逻辑

以经典算法题 两数之和 为例:

1. 遍历数组 ​

2. 计算当前元素需要的补数: need = target - nums[i]  ​

3. 使用  containsKey(need)  判断补数是否已存在 ​

  • 存在 → 直接返回两个下标 ​

  • 不存在 → 将当前值与下标存入 map ​

4. 先判断,后存入,避免自己和自己配对

这是 HashMap 最经典、最基础的实战用法。

 

七、key 与 value 存放规则

  • key:存你要查找的目标值 ​
  • value:存下标、位置、数量等信息

在两数之和中:

  • key = 数组元素值 ​
  • value = 数组下标

 

八、总结

哈希表是算法入门必须掌握的工具,核心就是: 快查、快存、键值对、O(1) 效率。

只要记住: key 存目标,value 存信息,containsKey 快速判断。 绝大多数查找类题目都能轻松解决。