面试题库(二)1:hashmap1.7跟1.8?优化点?红黑树化为什么是8?退化为什么?

HashMap 1.7 和 1.8 的区别

HashMap 1.7 和 1.8 的主要区别如下:

  • 存储结构:1.7 版本的 HashMap 使用数组 + 链表的结构来存储数据,而 1.8 版本的 HashMap 使用数组 + 链表 + 红黑树的结构来存储数据。
  • 扩容机制:1.7 版本的 HashMap 在容量不足时会进行扩容,扩容后的容量是原来的 2 倍;而 1.8 版本的 HashMap 在容量不足时会进行扩容,扩容后的容量是原来的 1.5 倍。
  • 初始容量:1.7 版本的 HashMap 的初始容量为 16,而 1.8 版本的 HashMap 的初始容量为 16 或 32,取决于 HashMap 的大小。
  • 负载因子:1.7 版本的 HashMap 的负载因子为 0.75,而 1.8 版本的 HashMap 的负载因子为 0.75 或 0.6,取决于 HashMap 的大小。

HashMap 1.8 的优化点

HashMap 1.8 在 1.7 的基础上进行了以下优化:

  • 使用红黑树:当链表长度超过阈值 8 时,会将链表转换为红黑树,从而提高查找效率。
  • 初始容量:根据 HashMap 的大小,动态调整初始容量,从而减少扩容的次数。
  • 负载因子:根据 HashMap 的大小,动态调整负载因子,从而提高性能。

<

你可能感兴趣的:(面试,职场和发展)