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

数组扩容

详细描述

相关推荐
李少兄10 分钟前
领域驱动设计与 Clean Code 的实践
java·数据库·领域驱动
存在的五月雨16 分钟前
项目中 Vitest 配置详解:vitest.config.ts
开发语言·javascript·vue.js
野犬寒鸦27 分钟前
Claude Code:终端AI编程助手全指南(附带指令全讲解)
开发语言·后端·面试·ai编程
淡笑沐白28 分钟前
JavaScript零基础到精通
开发语言·javascript·ecmascript
Languorous.29 分钟前
C++智能指针详解:原理、使用及避坑指南
开发语言·c++
老马952733 分钟前
opencode7-桌面应用实战2
java·人工智能·后端
广州灵眸科技有限公司40 分钟前
瑞芯微(EASY EAI)RV1126B yolov11-track多目标跟踪部署教程
linux·开发语言·网络·人工智能·yolo·机器学习·目标跟踪
李白的天不白42 分钟前
大规模请求数据并发问题
java·前端·数据库
智慧物业老杨1 小时前
智慧物业数智化转型实战:从工单响应到业主满意度的闭环构建
java·开发语言
Kiling_07041 小时前
Java集合框架:List集合详解与应用
java·开发语言·windows