美文网首页
暑期闭关之java技术1--HashMap

暑期闭关之java技术1--HashMap

作者: 小码 | 来源:发表于2017-07-03 16:25 被阅读8次

    今年9月份要找工作了,很期待,也很担心,毕竟做了这么多年的java开发,对java仍然是停留在“我会用”的层面上,“精通”两字说出来就太贴脸了。但!(就是这么生硬的转折)我要用暑假恶补两个月java知识,在此立个flag。

    “我要在简书上每天更新一篇技术知识” ——小码

    今天先来个简单的,听说面试会经常面到的HashMap,要想了解HashMap,我们先来说一下它的数据结构

    HashMap是一个“链表数组”,首先它是一个数组,其次每个数组元素存储的是链表。下面一一介绍HashMap中的方法

    1、构造方法

    HashMap构造方法中定义了数组长度initCapacity(默认值16)和负载因子loadFactor(默认值0.75),容量大小threshold为capacity * loadFactor,其中capacity为大于initCapacity的最小2的n次方值。

    2、put(key,value)

    步骤1:key为null,调用putForNullKey方法(好像是插入到数组第一个元素)
    步骤2:根据hash算法,计算key在数组中的下标
    步骤3:遍历当前数组元素,找出相同key值的,若存在相同key值的,则覆盖value
    步骤4:若不存在,则插入到链表头部

    3、get(key)

    步骤1:key为null,调用getForNullKey方法
    步骤2:根据hash算法,计算key在数组中的下标
    步骤3:遍历当前数组元素,找出相同key值的,若存在,则取出该value
    步骤4:若不存在,则返回null

    Tip:

    其中hash算法为hash & (capacity - 1),这是一个对hash值取模运算,&运算比算术取模运算速度要快,其次为什么是采用capacity - 1进行&运算,是为了减少hash值冲突次数(不同hash值存在同一数组元素下示为冲突)



    相关文章

      网友评论

          本文标题:暑期闭关之java技术1--HashMap

          本文链接:https://www.haomeiwen.com/subject/pbxzcxtx.html