java学习日记20230521-HashMap

  1. HashMap底层维护了node类型的数组table,默认为null
  2. 当创建对象时,将加载因子loadfactor初始化为0.75
  3. 当添加key-value时,通过key的哈希值得到table的索引,判断该索引处是否有元素,如果没有元素直接添加,如果该索引处有元素,
  4. 继续判断元素的key和准备添加的key是否相同,如果相等直接替换value,如果不想等需要判断是树结构还是链状结构,做出相应处理,如果添加时发现容量不够,则进行扩容
  5. 第一次添加时,把table扩容为16,后面每次都是两倍扩容
  6. 在jdk8中,如果一条链表的元素个数超过了TREEIFY_THRESHOLD(默认时8),并且table的大小>=MIN_TREEIFY_CAPYCITY(默认64),就会进行树化

     

posted @ 2023-05-21 22:56  、子夜  阅读(9)  评论(0)    收藏  举报