• 数据结构与算法 : Java-HashMap相关


    从HashMap的实现来看,我们总结拉链发的实现步骤如下:
    1. 计算 key 的 hashValue
    2. 根据 hashValue 值定位到 table[hashIndex] 。( table[hashIndex] 是一条链表Node)
    3. 若 table[hashValue] 为空则直接插入,不然则添加到链表末尾
    ————————————————
    原文链接:https://blog.csdn.net/abm1993/article/details/80886058

    1. 考虑特殊情况如果两个键的hashcode相同,你如何获取值对象?
    2.  
      当我们调用get()方法,
    3.  
      HashMap会使用键对象的hashcode找到bucket位置,
    4.  
      找到bucket位置之后,
    5.  
      会调用keys.equals()方法去找到链表中正确的节点,
    6.  
      最终找到要找的值对象。

      PS:
      负载因子表示一个散列表的空间的使用程度,有这样一个公式:initiallCapacity*loadFactor=HashMap的容量。所以负载因子越大则散列表的装填程度越高,也就是能容纳更多的元素(但是更容易产生hash冲突)。反之,负载因子越小则链表中的数据量就越稀疏,此时会对空间造成浪费(容纳元素少会导致频繁扩容)。

      https://www.cnblogs.com/baolingye/p/11667717.html (HashMap详解以及负载因子为啥为0.75泊松分布)

  • 相关阅读:
    TCP通信丢包原因总结
    根据日志查看QPS
    mysql:备份、复制
    集群
    redis性能提升
    redis源码——多机数据库的实现
    redis源码——单机数据库的实现
    redis 设置过期Key 的 maxmemory-policy 六种方式
    字符处理
    贝塞尔曲线
  • 原文地址:https://www.cnblogs.com/cccy0/p/12202058.html
Copyright © 2020-2023  润新知