美文网首页
HashMap的底层实现

HashMap的底层实现

作者: 帅气的喵了个咪 | 来源:发表于2018-08-22 15:42 被阅读0次

    数组+链表结构实现

    1.添加、删除、获取元素时都是先计算hash,根据hash和table.length计算index也就是table数组的下标,然后进行相应操作

    2.HashMap的创建

    HashMap默认初始化时会创建一个默认容量为16的Entry数组,默认加载因子为0.75,同时设置临界值为16*0.75

    3.put方法

    HashMap会对null值key进行特殊处理,总是放到table[0]位置

    put过程是先计算hash然后通过hash与table.length取摸计算index值,然后将key放到table[index]位置,当table[index]已存在其它元素时,会在table[index]位置形成一个链表,将新添加的元素放在table[index],原来的元素通过Entry的next进行链接,这样以链表形式解决hash冲突问题,当元素数量达到临界值(capactiy*factor)时,则进行扩容,是table数组长度变为table.length*2

    4.get方法

    同样当key为null时会进行特殊处理,在table[0]的链表上查找key为null的元素

    get的过程是先计算hash然后通过hash与table.length取摸计算index值,然后遍历table[index]上的链表,直到找到key,然后返回

    5.remove方法

    remove方法和put get类似,计算hash,计算index,然后遍历查找,将找到的元素从table[index]链表移除

    6.containsKey和containsValue

    containsKey方法是先计算hash然后使用hash和table.length取摸得到index值,遍历table[index]元素查找是否包含key相同的值

    相关文章

      网友评论

          本文标题:HashMap的底层实现

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