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

数组扩容

详细描述

相关推荐
王中阳Go1 分钟前
做了 3 年 Spring Boot,老板让我一周搭个 AI Agent,上线当天被安全叫停:Java 团队落地 AI 的三道坎,我替你踩完了
后端·面试
禁止摆烂_才浅3 分钟前
Vite 面试题
前端·面试·vite
禁止摆烂_才浅3 分钟前
微信小程序高频面试题
前端·面试·微信小程序
用户3126874877204 分钟前
别再 Thread.sleep 硬等了!并发工具类到底怎么选?
java
禁止摆烂_才浅4 分钟前
Vue2 高频面试题
前端·vue.js·面试
Java内核笔记6 分钟前
万字长文剖析 Spring Boot 4 自动配置机制源码:从 @EnableAutoConfiguration 到条件装配
java·后端
禁止摆烂_才浅6 分钟前
前端性能优化面试题
前端·面试·性能优化
evans在进步10 分钟前
Spring MVC 核心机制详解:全局异常处理、请求跳转与数据绑定
java·spring·mvc
禁止摆烂_才浅12 分钟前
Vue3 高频面试题
前端·vue.js·面试
何时梦醒12 分钟前
CSS 三栏布局与 BFC 深度解析:Float、Flex、Grid 三种方案一网打尽
前端·css·面试