Java基础-hashMap原理剖析
2024-09-30 05:24:03
Java基础-hashMap原理剖析
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.什么是哈希(Hash)
答:Hash就是散列,即把对象打散。举个例子,有100000条数据,我们通过哈希将这10万条数据分别存放在不同的分区中,假设是平均分成了10分,那么每个分区的数据就是1万条数据,当我们要在这10万条数据中查询一条记录时,我们只需要确定这个元素在那个分区,然后去这个指定的分区查询我们想要的元素。这个过程理想情况下可以帮我们检索掉“(n-1)/n”的数据,也就是说原来要在10万条数据中查找某个元素,由于我们通过哈希分过区之后,就只需要确定元素在哪个分区,然后在这个分区中找这个元素,而查找这个元素我们只需在指定分区(1万条数据)查找即可。从而帮我们过滤掉“(n-1)/n”数据量的查询!
二.HashMap的组成部分
HashMap从本质上来说,是数据和链表的结合体,数组的长度就是桶的个数,而每个数组元素存储的都是一个链表!大致结果如下图所示:
三.put过程分析
1>.查看HashMap的put方法其实是调用putVal方法
2>.查看新哈希hash(key)的过程
3>.hashmap中判断key是否存在的算法
4>.hashmap中判断key是否存在的详细步骤如下
三.hashMap key设计过程考察
最新文章
- Consul Template的简单使用
- C和指针笔记 3.8 static关键字
- 应中DOS中断显示字符串(摘自《汇编语言》王爽)
- PHP 错误处理机制
- 分布式MySQL 数据库
- .NET SDK和下载
- JDBC与ODBC的区别与应用
- java版本 ueditor 在线编辑器 配置
- 洛谷 P1040 加分二叉树
- Android 根据EditText搜索框ListView动态显示数据
- 面试题:在O(1)时间删除链表结点
- HDU 1562 Guess the number
- echarts笔记
- Kotlin入门(25)共享参数模板
- IntelliJ IDEA安装bower
- AtCoder Regular Contest 077 E - guruguru
- (转)Python 日志处理(三) 日志状态码分析、浏览器分析
- cocos2d-x开发记录:二,基本概念(粒子系统,Scheduler和定时器)
- 初步理解IOC和DI和AOP模式
- IDEA 中 右键新建时,没有新建class的解决方案