• HashMap


    默认情况下,HashMap 初始容量是16,负载因子为 0.75

    当两个对象的hashcode相同会发生什么,?如果两个键的hashcode相同,你如何获取值对象?
            hash碰撞
            HashMaP会先用key对象的hashcode找到bucket位置,之后调用keys.equals()<equals()方法仅仅在获取值对象的时候才出现>方法,去找到LinkedList中正确的结点。

    重新调整HashMap大小存在什么问题?
                多线程的情况下会出现竞争(多个线程发现需要扩容),【在调整大小的过程中,存储在链表中的元素的次序会反过来,因为移动到新的bucket时,HashMap并不会将链表放在尾部而是头部,
          这是避免尾部遍历<tail traversing:这是为了避免在新列表插入数据时,遍历队尾的位置,因为直接插入的效率更高,但是如果插入队尾,还得遍历出队尾的位置,这是一种损耗>。
          https://blog.csdn.net/xiaohui127/article/details/11928865
          队头插入方式,导致HashMao在多线程的情况下,死循环的问题。<JDK1.8的优化了这个问题,通过增加tail指针,既避免了死循环问题(让数据直接插入到队尾),又避免了尾部遍历。>】
         【ps如果在多线程的情况下可以反问,为什me还要用HashMap】


    为什么String, Interger这样的wrapper类适合作为键?
               String类不可变,它是final修饰的,而且重写了hashcode 和equals 。其他wrapper类类似,

    其他可以参考:
    https://segmentfault.com/a/1190000012926722
    http://tracylihui.github.io/2015/07/01/Java%E9%9B%86%E5%90%88%E5%AD%A6%E4%B9%A01%EF%BC%9AHashMap%E7%9A%84%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86/

  • 相关阅读:
    第十一作业
    第十次作业
    06 逻辑回归
    05 线性回归算法
    04 K均值算法--应用
    03 K均值算法
    02 机器学习相关数学基础
    01 机器学习概述
    15 语法制导的语义翻译
    014 算符优先分析
  • 原文地址:https://www.cnblogs.com/liamlee/p/9342094.html
Copyright © 2020-2023  润新知