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

数组扩容

详细描述

相关推荐
DXX——12 分钟前
嵌入式基础学习|C语言篇——结构体(含进阶)二
c语言·开发语言·学习
兀行者(做个有情怀的java程序员)13 分钟前
什么是Java虚拟机(JVM)?它的作用是什么?
java·开发语言·jvm
小梁不秃捏18 分钟前
SQL 大厂面试题目(由浅入深)
数据库·sql·面试
liberty03070623 分钟前
40环状DNA序列的最小表示法Java版-青训营刷题
java·开发语言
java_python源码33 分钟前
[含文档+PPT+源码等]精品基于Python实现的django个性化健康餐计划订制系统
开发语言·前端·python
招风的黑耳34 分钟前
Java+vue前后端分离项目集群部署
java
pumpkin8451437 分钟前
PlantUML 总结
开发语言
Excuse_lighttime38 分钟前
二叉树的遍历方式和子问题思路
java·开发语言·数据结构·算法
北执南念44 分钟前
Synchronized使用
android·java·jvm
所待.3831 小时前
初始计算机网络
java·计算机网络