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设计过程考察

最新文章

  1. Consul Template的简单使用
  2. C和指针笔记 3.8 static关键字
  3. 应中DOS中断显示字符串(摘自《汇编语言》王爽)
  4. PHP 错误处理机制
  5. 分布式MySQL 数据库
  6. .NET SDK和下载
  7. JDBC与ODBC的区别与应用
  8. java版本 ueditor 在线编辑器 配置
  9. 洛谷 P1040 加分二叉树
  10. Android 根据EditText搜索框ListView动态显示数据
  11. 面试题:在O(1)时间删除链表结点
  12. HDU 1562 Guess the number
  13. echarts笔记
  14. Kotlin入门(25)共享参数模板
  15. IntelliJ IDEA安装bower
  16. AtCoder Regular Contest 077 E - guruguru
  17. (转)Python 日志处理(三) 日志状态码分析、浏览器分析
  18. cocos2d-x开发记录:二,基本概念(粒子系统,Scheduler和定时器)
  19. 初步理解IOC和DI和AOP模式
  20. IDEA 中 右键新建时,没有新建class的解决方案

热门文章

  1. Android几行代码实现监听微信聊天
  2. Linux shell (6)
  3. Tkernel Package NCollection哈希基础的类
  4. Revit二次开发-根据视图阶段(Phase)创建房间
  5. 粒子群算法(PSO)算法解析(简略版)
  6. jumpserver部署
  7. mysql select 字段别名是否可以用在 select中或者where中
  8. [转载]ValidationExpression验证规则
  9. 云平台项目--学习经验--回调函数中call和apply
  10. wc命令行程序