HashMap扩容以及ConcurrentHashMap扩容机制

﹏ヽ暗。殇╰゛Y 2023-10-03 14:42 83阅读 0赞

HashMap扩容以及ConcurrentHashMap扩容机制

  • HashMap
    • 1.7
    • 1.8
  • ConcurrentHashMap
    • 1.7
    • 1.8

HashMap

1.7

在这里插入图片描述

  1. void transfer(Entry[] newTable) {
  2. // 1.7 的hashmap 数组+链表
  3. // 获取到旧表
  4. Entry[] src = table;
  5. // 获取到新表的长度(数组的长度)
  6. int newCapacity = newTable.length;
  7. // 遍历旧表的每一条链表
  8. for (int j = 0; j < src.length; j++) {
  9. //遍历旧的Entry数组
  10. Entry<K, V> e = src[j]; //取得旧Entry数组的每个元素
  11. if (e != null) {
  12. // 释放掉旧的Entry数组的对象引用
  13. src[j] = null;
  14. // 遍历链表中的元素进行转移到新表中(头插法转移元素)
  15. do {
  16. Entry<K, V> next = e.next;
  17. // 重新计算每个元素在数组中的位置!!
  18. int i = indexFor(e.hash, newCapacity);
  19. e.next = newTable[i];
  20. newTable[i] = e;
  21. e = next;
  22. } while (e != null);
  23. }
  24. }
  25. }

1.8

在这里插入图片描述

ConcurrentHashMap

1.7

1.8

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,83人围观)

还没有评论,来说两句吧...

相关阅读

    相关 hashmap 扩容机制

    hashmap是一种基于数组和链表(或红黑树)的数据结构,它可以存储键值对的映射关系。hashmap的扩容机制是指当hashmap中的元素个数超过数组长度乘以负载因子时,就会重