zoukankan      html  css  js  c++  java
  • HashMap工作原理

    hashmap存储的为key-value键值对,get的时间复杂度是O(1),具体实现原理如下:

    1. hashmap是基于数组之上,通过一定算法,用空间转换时间

    2. hashmap的数据结构为数组+链表Entity<key,value>

    3. 首先通过hash算法计算key的hash值,通过hash值和数组长度计算链表的索引值,jdk1.7 的算法为:h & (length-1),找到hash对应的链表,遍历链表,通过key的equal方法确认查找的最终位置

    4. 当hashmap的负载因子>0.75时,扩展数组大小。

    5. HashMap使用LinkedList来解决碰撞问题,当发生碰撞了,对象将会储存在LinkedList的下一个节点中。

    6. 减少碰撞:使用不可变的、声明作final的对象,并且采用合适的equals()和hashCode()方法的话,将会减少碰撞的发生,提高效率。不可变性使得能够缓存不同键的hashcode,这将提高整个获取对象的速度

    参考:http://www.admin10000.com/document/3322.html

  • 相关阅读:
    AGC005D ~K Perm Counting
    运行python脚本后台执行
    java枚举类型
    java可变参数长度
    java 泛型数组列表
    java抽象类
    java final使用
    java继承
    java 对象
    java 重载
  • 原文地址:https://www.cnblogs.com/wolflowhereu/p/5254310.html
Copyright © 2011-2022 走看看