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的位置

数组扩容

详细描述

相关推荐
故事和你9113 小时前
洛谷-算法2-1-前缀和、差分与离散化1
开发语言·数据结构·c++·算法·深度优先·动态规划·图论
励志的小陈19 小时前
贪吃蛇(C语言实现,API)
c语言·开发语言
QC班长19 小时前
Maven公司私库配置踩坑点
java·服务器·maven·intellij-idea
Makoto_Kimur19 小时前
java开发面试-AI Coding速成
java·开发语言
laowangpython19 小时前
Gurobi求解器Matlab安装配置教程
开发语言·其他·matlab
wengqidaifeng19 小时前
python启航:1.基础语法知识
开发语言·python
观北海19 小时前
Windows 平台 Python 极简 ORB-SLAM3 Demo,从零实现实时视觉定位
开发语言·python·动态规划
wuqingshun31415920 小时前
说说mybatis的缓存机制
java·缓存·mybatis
蒸汽求职20 小时前
跨越 CRUD 内卷:半导体产业链与算力基建下的软件工程新生态
人工智能·科技·面试·职场和发展·软件工程·制造
小兵张健20 小时前
一场大概率没拿到 offer 的面试,让我更坚定去做喜欢的事
人工智能·面试·程序员