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

数组扩容

详细描述

相关推荐
tangjunjun-owen3 分钟前
[特殊字符] Python异步调用本地Ollama大模型实战:从Demo到高并发避坑指南
开发语言·chrome·python
RSTJ_16256 分钟前
PYTHON+AI LLM DAY FOURTY-THREE
开发语言·人工智能·python
善恶怪客6 分钟前
Java-二维数组
java
Volunteer Technology7 分钟前
SpringAI(二)Models 模型介绍
开发语言·人工智能·python
勿忘,瞬间11 分钟前
JDBC编程
java
万邦科技Lafite32 分钟前
如何通过 item_search_img API 接口获取淘宝商品信息
java·前端·数据库
雨辰AI36 分钟前
面试题:人大金仓事务隔离级别、MVCC 机制详解(与MySQL差异对比)
数据库·后端·mysql·面试·政务
AKA__Zas37 分钟前
芝士算法(双指针篇 1.0)
java·算法·学习方法
lly20240638 分钟前
《jEasyUI 取得选中行数据》
开发语言
玛卡巴卡ldf42 分钟前
【LeetCode 手撕算法】(栈)有效括号、最小栈、字符串解码、每日温度、柱状图最大矩形
java·数据结构·算法·leetcode·力扣