zoukankan      html  css  js  c++  java
  • hashMap原理

    hashMap是非同步的,即线程不安全。

    变为同步有Collection.synchronizeMap() 抑或CurentHashMap类

    hashMap为一个数组链表(数组中的每个元素都是一个链表的头结点)    hashcode()对建计算Hash值    equals()发生碰撞时,检测key值是否相同     存储方式为Entry类(即key value存储在一起) 

    hashMap的key用Integer,String。因为要计算hashcode值,所以只要final修饰的类都可以作为key。

    如果链表的阈值超过6,即将链表转为红黑树。

    put(key,value) 首先hash(key)获得数组下标,再调用equals()方法检查Key是否相同。如果key相同则,更新value值。如果不同,则在链表末尾插入Entry(即Entry->next = 新Entry)。

     负载因子为0.75。数组填满75%的时候。就会发生rehasing。即将数组扩大(具体细节,以后再加上来)

    rehasing时候的hasing竞争,没搞懂。

      

  • 相关阅读:
    今年的第几天?
    特殊乘法
    abc
    求最大最小数
    二叉树遍历
    球的半径和体积
    成绩排序
    OC学习篇之---类的定义
    OC学习篇之---第一个程序HelloWorld
    OC学习篇之---类的初始化方法和点语法的使用
  • 原文地址:https://www.cnblogs.com/GlazedCat/p/10549024.html
Copyright © 2011-2022 走看看