zoukankan      html  css  js  c++  java
  • HashMap的总结

    HashMap与HashTable的区别

    1. 相同点
      1. 二者存储结构
      2. 二者实现原理
    2. 不同点
      1. HashTable相对于HashMap是线程安全的
      2. 不允许 keyvaluenull
      3. HashTable是一个过时的集合类,目前不建议使用,当需要线程安全时,可以使用CurrentHashMap

    HashMap的总结

    1. JDK1.8 HashMap的底层是 数组 + 链表 + 红黑树
    2. 装在因子
      1. 何时扩容:装载因子*初始容量小于散列表的元素时,进行扩容
      2. 扩容为原来的2倍
      3. 装载因子默认值是 0.75
        1. 初始化指定的装载因子,无论大小都会对HashMap性能产生不好的影响
        2. 装载因子大了
          1. 可以减小再散列的次数,但是会增加hash碰撞的概率,也会耗费性能:操作链表 + 红黑树
        3. 装载因子小了
          1. 可以减少hash碰撞的概率,但是会增加扩容(再散列)的次数
    3. 初始化容量
      1. 默认 16 必须为2的幂次
      2. 初始化容量大了
        1. 遍历的速度会减慢
      3. 初始化容量小了
        1. 扩容次数(再散列)会变多
    4. 对随机性的处理
      1. 并不是直接拿key的hashCode来用,而是让其与自己的高16位做异或运算,增加了元素放入Hash表的随机性
    5. 桶转为红黑树时的注意事项
      1. 并不是桶上满8个元素直接转->红黑树,还要满足散列表容量大于64才行
  • 相关阅读:
    Day1.13 v-for中key属性的使用
    Day1.12 v-if、v-show
    Day1.11 v-for 四种使用方式
    Day1.10 属性绑定设置元素行类样式
    Day1.9 属性绑定设置元素class类样式
    Day1.7 v-model
    Day1.8 项目:计算器
    Day1.6 事件修饰符
    win7 忘记密码
    excel 单元格0 不显示的最佳方法
  • 原文地址:https://www.cnblogs.com/JQ04/p/15093093.html
Copyright © 2011-2022 走看看