Java基础面试-HashMap和HashTable

HashMap和HashTable的区别?

  • HashMap方法没有synchronized修饰,线程非安全,HashTable线程安全
  • HashMap允许key和value为null,而HashTable不允许

底层实现

数组+链表

jdk8开始链表高度到8、数组长度超过64,链表转变为红黑树,元素以内部类Node节点存在

  • 计算key的hash值,二次hash然后对数组长度取模,对应到数组下标,
  • 如果没有产生hash冲突(下标位置没有元素),则直接创建Node存入数组
  • 如果产生hash冲突,先进行equal比较,相同则取代该元素,不同,则判断链表高度插入链表,链表高度达到8,并且数组长度到64则转变为红黑树,长度低于6则将红黑树转回链表
  • key为null,存在下标0的位置

数组扩容

详细描述

相关推荐
APIshop6 分钟前
京东关键词搜索接口完全指南
java·开发语言·数据库
Redemption12 分钟前
嵌软面试每日一阅----Linux驱动之字符设备驱动
linux·面试·职场和发展
东离与糖宝14 分钟前
HashMap从入门到源码:Java7/8/21区别+面试陷阱+高频追问合集
java·人工智能·面试
追雨潮16 分钟前
BGE-M3 多语言向量模型实战:.NET C# 从原理到落地
开发语言·c#·.net
海天一色y16 分钟前
三分支声学超结构传输特性计算:格林函数法的完整MATLAB实现与深度解析
开发语言·matlab
喜欢喝果茶.21 分钟前
Qt翻译接口 -逐条翻译(免费级)
开发语言·python
顶点多余21 分钟前
QT-设计师模式基本知识
开发语言·qt
南 阳25 分钟前
Python从入门到精通day60
开发语言·python
不知名的老吴29 分钟前
返回多个值:让函数输出更丰富又不复杂
开发语言·python
larance32 分钟前
python包 解压修改后重新打成whl 包
开发语言·python