news 2026/6/10 8:33:09

HashMap 获取元素的大致过程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HashMap 获取元素的大致过程

hashMap 中

map.put("A",1);map.put("B",2);map.put("C",3);

然后执行

map.get("B");

请描述一下 HashMap 获取元素的大致过程。

HashMap 实际过程

第一步:计算 hash
hash=hash(key)

第二步:计算桶下标

假设容量为16

index=(n-1)&hash

例如:

15&hash

得到桶的位置。


第三步:找到桶
table[index]

此时有三种情况:

情况1

桶为空

returnnull;

直接结束。


情况2

桶第一个节点就是目标

先比较:

hash是否相同&&equals是否相同

满足直接返回。

HashMap 不会一上来就遍历链表。

先看头节点是不是。


情况3

发生哈希冲突

开始向后查找。

JDK8:

  • 链表遍历
  • 红黑树查找

追问

为什么既要比较 hash,又要比较 equals?

例如:

"Aa".hashCode()"BB".hashCode()

它们的 hashCode 相同。

如果只比较 hash:

Aa==BB

显然错误。

所以:

hash相同+equals相同

才能认为是同一个 key。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 8:26:26

大模型推理的“最后一公里”:为什么AI很聪明,但用起来很慢?

引言你有没有过这样的体验:向AI助手问一个问题,它思考了几秒钟,然后给你一段精彩的回答。你惊叹于它的智能,但那个“几秒钟”的等待,总让你觉得差了点什么。另一边,ChatGPT、Claude、文心一言这些产品&…

作者头像 李华
网站建设 2026/6/10 8:18:08

5分钟快速上手:Sunshine开源游戏串流服务器完整指南

5分钟快速上手:Sunshine开源游戏串流服务器完整指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 想要在客厅电视上玩PC游戏,还是想在平板上继续游戏进度…

作者头像 李华
网站建设 2026/6/10 8:12:06

从多模态 AI 到实时声音可视化:VST 插件开发与 TD/Ableton 全链路实践

摘要 随着多模态生成式 AI 的快速发展,文本、图像、视频到音频的跨模态生成能力正深刻改变音乐制作、音效设计与实时视听演出的工作流。本文从工程实践出发,介绍如何将多模态音频模型(如 Stable Audio、AudioX、Suno 等)封装为标准…

作者头像 李华