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

数组扩容

详细描述

相关推荐
少控科技几秒前
QT新手日记035
开发语言·qt
青川学长几秒前
Cursor + Qt Creator 混合开发指南
开发语言·qt
java1234_小锋3 分钟前
Spring里AutoWired与Resource区别?
java·后端·spring
风象南7 分钟前
Spring Boot 定时任务多实例互斥执行
java·spring boot·后端
崎岖Qiu8 分钟前
【深度剖析】:结合 Spring Bean 的生命周期理解 @PostConstruct 的原理
java·笔记·后端·spring·javaee
毕设源码-郭学长11 分钟前
【开题答辩全过程】以 基于Springboot旅游景点管理系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
嫂子开门我是_我哥12 分钟前
第十五节:文件操作与数据持久化:让程序拥有“记忆”
开发语言·python
是三好16 分钟前
JUC并发编程
java·开发语言
哈哈不让取名字22 分钟前
分布式日志系统实现
开发语言·c++·算法
3GPP仿真实验室22 分钟前
【MATLAB源码】6G:感知辅助毫米波 MIMO 信道估计仿真平台
开发语言·matlab·智能电视