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扩容会导致死锁。

  • 相关阅读:
    Windows下编译TensorFlow1.3 C++ library及创建一个简单的TensorFlow C++程序
    flask自动重启与配置文件导入,路由重定向(8)
    go(4)字符串的应用
    go(3)变量的应用与数据类型
    go(2)输出,转义,字符接收
    go(1)
    tornado集成wtforms
    HTML5笔记007
    HTML5笔记006
    HTML5笔记005
  • 原文地址:https://www.cnblogs.com/faker2014/p/7199613.html
Copyright © 2011-2022 走看看