zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    volumetric rendering ---fog/ light/cloud
    strand based hair rendering
    一个相当复杂的延迟管线
    wenti
    ubunt tmux X Error of failed request
    Python编程练习题
    ubuntu15.04 安装 pylab失败,先记下来,漫漫看
    翻译:打造基于Sublime Text 3的全能python开发环境
    关于web2py外网访问,图形界面不显示等问题的解决办法
    yii2中gii外网访问的配置方法
  • 原文地址:https://www.cnblogs.com/liamlee/p/9342094.html
Copyright © 2011-2022 走看看