zoukankan      html  css  js  c++  java
  • 初识HashMap

    (1)ArrayList以数组形式实现,顺序插入、查找快,插入、删除较慢

    (2)LinkedList以链表形式实现,顺序插入、查找较慢,插入、删除方便

    那么是否有一种数据结构能够结合上面两种的优点呢?有,答案就是HashMap。

    关  注  点 结      论
    HashMap是否允许空 Key和Value都允许为空
    HashMap是否允许重复数据 Key重复会覆盖、Value允许重复
    HashMap是否有序 无序,特别说明这个无序指的是遍历HashMap的时候,得到的元素的顺序基本不可能是put的顺序
    HashMap是否线程安全 非线程安全

    Entry组成的是一个单向链表,因为里面只有Entry的后继Entry,而没有Entry的前驱Entry。用图表示应该是这么一个数据结构。

    1.空的Key会默认放在第0位的数组位置上

    2.根据取模得到的位置,。另外,这个取模操作的正确性依赖于length必须是2的N次幂,这个熟悉二进制的朋友一定理解,因此注意HashMap构造函数中,如果你指定HashMap初始数组的大小initialCapacity,如果initialCapacity不是2的N次幂,HashMap会算出大于initialCapacity的最小2的N次幂的值,作为Entry数组的初始化大小

    3.新的Entry再次占据table[1]的位置,并且持有原table[1]。

    扩展:Hashmap扩容会导致死锁。

  • 相关阅读:
    Longest Mountain in Array 数组中的最长山脉
    css 解决 图片 底部 3像素问题
    获取当前年月日2020-09-30格式
    vue + elememt ui table 实现滚屏效果
    滚动字
    layui 之监听 select 的变化
    正则匹配非汉字
    layui form里的select元素动态赋值无效
    layui 之 弹框重新打开 upload无效
    GPS坐标转百度坐标
  • 原文地址:https://www.cnblogs.com/faker2014/p/7199613.html
Copyright © 2011-2022 走看看