• HashMap问题


    一、什么是HashMap

    HashMap是一个key-value集合,结合了数组和链表的优点,提供快速查询、新增、修改map节点的功能

    二、HashMap的继承关系

    三、HashMap数据结构

    橙色是一个数组,每个数组关联一个Entry链表。
    下面是一个entry的数据结构,包含hash值,key,value和指向下一个entry的链接

    hash key value next

    四、HashMap查找、添加元素是怎样的

    添加元素put:先对key进行hash,根据hash值定位到数组下标(每个数组元素对应的是一个entry链表),如果无元素则成为第一个元素,如果有元素则循环链表,有key相同的entry则覆盖,没有则将新元素放在链表头,并指向原来的第一个元素
    查找元素get:先对key进行hash,根据hash值定位到数组下标,然后循环链表,找到key相同的entry并返回value

    五、什么是Hash碰撞

    步骤四种put时,如果新增entry定位的数组下标已有元素就发生hash碰撞,因为最好的分配是每个数组元素只包含一个entry,这样时间复杂度就是O(1),如果包含多个元素,查找的时候就需要循环链表,时间复杂度就是O(n)

    六、HashMap是线程安全的吗?

    不是,如果多个线程同时put元素,key相同的时候,可能会发生后面的put覆盖前面的key。

    七、HashMap怎样处理null

    HashMap允许key、value都为null,null会存放在索引为0的数组中

  • 相关阅读:
    【css3】使用filter属性实现改变svg图标颜色
    Live CD
    Linux定时任务 crontab(-l -e)、at、batch
    linux图形界面 KDE、GNOME
    shell脚本3——调试
    shell脚本2——控制语句
    bash:双引号和单引号
    shell脚本1——变量 $、read、``
    SSH
    Linux关机、重启、退出
  • 原文地址:https://www.cnblogs.com/cgfpx/p/11649137.html
Copyright © 2020-2023  润新知