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

数组扩容

详细描述

相关推荐
彩妙不是菜喵2 分钟前
STL精讲:string类
开发语言·c++
nbsaas-boot2 分钟前
为什么 ScopedValue 是 SaaS 的分水岭
java
小北方城市网3 分钟前
生产级 Spring Boot + MyBatis 核心配置模板
java·spring boot·redis·后端·spring·性能优化·mybatis
小屁猪qAq5 分钟前
创建型之单例模式
开发语言·c++·单例模式
卓怡学长9 分钟前
m119在线购书商城系统
java·数据库·spring boot·spring·汽车
郝学胜-神的一滴10 分钟前
深入解析以太网帧与ARP协议:网络通信的基石
服务器·开发语言·网络·程序人生
lingran__17 分钟前
C语言动态内存管理详解
c语言·开发语言
haokan_Jia20 分钟前
【java使用LinkedHashMap进行list数据分组写入,顺序并没有按照原始顺序,原因分析】
java·开发语言·list
C雨后彩虹20 分钟前
中文分词模拟器
java·数据结构·算法·华为·面试
a努力。20 分钟前
蚂蚁Java面试被问:流批一体架构的实现和状态管理
java·后端·websocket·spring·面试·职场和发展·架构