本人大四,以前也开发过几个项目,Map相关集合也总用。但是从来没有研究过底层的实现,只知道杂用。结果在最开始的几次面试中一脸懵逼。认识到不足后,浅显的学习了一下,总结成一下几点。(如果写错了还望指正)

1.HashMap基于Map接口实现,元素以键值对的方式存储,并且允许使用null 建和null值,因为key不能重复,所以只能有一个键为null,另外HashMap不能保证放入元素的顺序,它是无序的,HashMap是线程不安全的。需要同步可以用ConcurrentHashMap和 Collections.synchronizedMap(Map m),推荐使用ConcurrentHashMap,下次会提到它两

2.默认初始化大小16,负载因子0.75

容量是哈希表中桶(Entry数组)的数量,初始容量知识哈希表在创建时的容量。加载因子是哈希表在其容量自动增加之前可以达到多满的一种尺度。当哈希表中的条目数超出了加载因子与当前你容量的乘积时,通过rehash方法将容量翻倍。

3

aaarticlea/png;base64,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" alt="" />

HashMap采用Entry数组来存储key-value对,每一个键值对组成了一个Entry实体,Entry类实际上是一个单向的链表结构,它具有Next指针,可以连接下一个Entry实体,依次来解决Hash冲突的问题,因为HashMap是按照Key的hash值来计算Entry在HashMap中存储的位置的,如果hash值相同,而key内容不相等,那么就用链表来解决这种hash冲突
(注:JDK1.8 当链表长度大于8,转化为红黑树存储)
4.hash碰撞:两个对象的key的hashcode是一样的
(1)if碰撞 如何get value?
通过equals遍历table那个位置上面的Entry链表
(2)我当初理解时候就是在网上看见了这张图片(时间有点长,当初就保存了,都忘在哪篇博客看到的了,勿怪),分享给大家


几次面试后才弄懂的HashMap的更多相关文章

  1. 面试前需要弄懂的SQL

    说明:创建数据库 view source   print? 1 Create DATABASE database-name 说明:删除数据库 view source   print? 1 drop d ...

  2. 2018前端面试总结,看完弄懂,工资少说加3K | 掘金技术征文

    2018前端面试总结,看完弄懂,工资少说加3K | 掘金技术征文:https://juejin.im/post/5b94d8965188255c5a0cdc02

  3. 彻底弄懂 JavaScript 执行机制

    本文的目的就是要保证你彻底弄懂javascript的执行机制,如果读完本文还不懂,可以揍我. 不论你是javascript新手还是老鸟,不论是面试求职,还是日常开发工作,我们经常会遇到这样的情况:给定 ...

  4. 这一次,彻底弄懂 JavaScript 执行机制

    本文转自https://juejin.im/post/59e85eebf265da430d571f89#heading-4 本文的目的就是要保证你彻底弄懂javascript的执行机制,如果读完本文还 ...

  5. SQL Server-聚焦NOLOCK、UPDLOCK、HOLDLOCK、READPAST你弄懂多少?(三十四)

    前言 时间流逝比较快,博主也在快马加鞭学习SQL Server,下班回来再晚也不忘记更新下博客,时间挤挤总会有的,现在的努力求的是未来所谓的安稳,每学一门为的是深度而不是广度,求的是知识自成体系而不是 ...

  6. 彻底弄懂JS的事件冒泡和事件捕获(不推荐阅读)

    由于搬去敌台了,好久没来博客园,今天无意中翻到有“误认子弟”的评论,这里特意做个说明. 本文中关于事件冒泡和事件捕获的描述和例子都是OK的,错就错在后面用jquery去展示了利用事件冒泡的例子有误,其 ...

  7. 一文弄懂神经网络中的反向传播法——BackPropagation【转】

    本文转载自:https://www.cnblogs.com/charlotte77/p/5629865.html 一文弄懂神经网络中的反向传播法——BackPropagation   最近在看深度学习 ...

  8. [转]js模块化编程之彻底弄懂CommonJS和AMD/CMD!

    原文: https://www.cnblogs.com/chenguangliang/p/5856701.html ------------------------------------------ ...

  9. [转帖]彻底弄懂UTF-8、Unicode、宽字符、locale

    彻底弄懂UTF-8.Unicode.宽字符.locale linux后端开发   已关注   彻底弄懂UTF-.Unicode.宽字符.locale unicode 是字符集 utf-8是编码格式.. ...

随机推荐

  1. Spring+SpringMVC+MyBatis+easyUI整合基础篇

    基础篇 Spring+SpringMVC+MyBatis+easyUI整合基础篇(一)项目简介 Spring+SpringMVC+MyBatis+easyUI整合基础篇(二)牛刀小试 Spring+S ...

  2. 2016广东工业大学新生杯决赛网络同步赛暨全国新生邀请赛 题解&源码

    Problem A: pigofzhou的巧克力棒 Description 众所周知,pigofzhou有许多妹子.有一天,pigofzhou得到了一根巧克力棒,他想把这根巧克力棒分给他的妹子们.具体 ...

  3. c++(排序二叉树线索化)

    前面我们谈到了排序二叉树,还没有熟悉的同学可以看一下这个,二叉树基本操作.二叉树插入.二叉树删除1.删除2.删除3.但是排序二叉树也不是没有缺点,比如说,如果我们想在排序二叉树中删除一段数据的节点怎么 ...

  4. 判断标签是否包含class的方法

    if ($(this).find('i').hasClass('l-icon-wuxing')) { //取消收藏 $(this).find('i').removeClass('l-icon-wuxi ...

  5. 为什么ios手机安装好fiddler证书/charles证书还是抓不到https请求?

    为什么ios手机安装好fiddler证书/charles证书还是抓不到https请求? 最近有不少人有此困惑, 因为你的ios系统应该是10.0以上的系统, 在手机系统设置---关于手机----证书信 ...

  6. css3渐变之径向渐变

    径向渐变由它的中心定义.可以指定渐变的中心.形状(原型或椭圆形).大小.默认情况下,渐变的中心是 center(表示在中心点),渐变的形状是 ellipse(表示椭圆形),渐变的大小是 farthes ...

  7. javascript之事件监听

    addEventListener是一个监听事件并处理相应的函数,用于向指定元素添加事件句柄,可使用removeEventListener()方法来移除addEventListener()方法添加的事件 ...

  8. Python 之 基础知识(三)

    一.函数 def 函数名(): 函数封装的代码 ... def是英文define缩写 别的Python文件可以引入 调用 定义时 和其他代码包括注释保留两个空行 pycharm 调试时 F8 Step ...

  9. Tomcat之URL查找的过程

    Tomcat之URL查找的过程     webapps目录: tomcat共享目录.需要共享的本地资源放到此目录中.  

  10. The most interesting feature of iPhone X - FaceID

    No doubt everybody knows that iPhone 8 & iPhone X appear on the market. A feature called FaceID ...