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

数组扩容

详细描述

相关推荐
csdn2015_1 分钟前
java 把对象转化为json字符串
java·前端·json
想带你从多云到转晴2 分钟前
03、数据结构与算法--单向链表
java·数据结构·算法
Elnaij5 分钟前
从C++开始的编程生活(24)——C++11标准Ⅰ
开发语言·c++
无籽西瓜a5 分钟前
【西瓜带你学设计模式 | 第七期 - 适配器模式】适配器模式 —— 类适配器与对象适配器实现、优缺点与适用场景
java·后端·设计模式·软件工程·适配器模式
mjhcsp7 分钟前
AT_arc205_c [ARC205C] No Collision Moves 题解
开发语言·c++·算法·题解
Oliver_LaVine11 分钟前
idea启动后端项目-控制台中文乱码处理
java·ide
Flittly11 分钟前
【SpringAIAlibaba新手村系列】(6)PromptTemplate 提示词模板与变量替换
java·spring boot·agent
MLGDOU16 分钟前
【Qt开发】信号与槽
开发语言·数据库·qt
yaaakaaang19 分钟前
3.springboot,用eclipse轻松创建~
java·spring boot·eclipse
计算机学姐21 分钟前
基于SpringBoot的新能源充电桩管理系统
java·vue.js·spring boot·后端·mysql·spring·java-ee