zoukankan      html  css  js  c++  java
  • Map

    HashMap

    • 底层结构
      • JDK8之前是数组加链表
      • 之后是数组加链表/红黑树
    • 线程不安全
    • 散列表,它存储的内容是键值对(key-value)映射。
    • 扩容:初始值16,当输入第17个时,扩容为原来的2倍
    • 解决哈希冲突
      • JDK8之前HashMap 通过 key 的 hashCode 经过扰动函数处理过后得到 hash 值,然后通过 (n - 1) & hash 判断当前元素存放的位置(这里的 n 指的是数组的长度),如果当前位置存在元素的话,就判断该元素与要存入的元素的 hash 值以及 key 是否相同,如果相同的话,直接覆盖,不相同就通过拉链法解决冲突。
      • 之后当链表长度大于阈值(默认为8)(将链表转换成红黑树前会判断,如果当前数组的长度小于 64,那么会选择先进行数组扩容,而不是转换为红黑树)时,将链表转化为红黑树,以减少搜索时间。
  • 相关阅读:
    Tips
    react
    Vue 双向绑定
    jQuery 学习笔记
    CC NOV17
    一种高效处理无修改区间或树上询问的数据结构(附代码)
    HNOI 2017
    PA2015
    bzoj 泛做
    GG
  • 原文地址:https://www.cnblogs.com/wzh7/p/12716183.html
Copyright © 2011-2022 走看看