HashMap 和 Hashtable 有什么区别?

1、典型回答

HashMap 和 Hashtable 都实现了 Map 接口,都是用来存储键值对的数据结构。

它们的区别主要有以下几点:

  1. 线程安全性: HashMap 是非线程安全的,而 Hashtable 是线程安全的
  2. null 键和 null 值的支持: HashMap 允许键和值都为 null,即可以插入 null 键和 null 值; 而 Hashtable 不允许键或值为 null,如果尝试插入 null 键或 null 值,会抛出NullPointerException。
  3. **性能:**由于 HashMap 不是线程安全的,在单线程环境下通常有更好的性能。Hashtable 是线程安全的,但会带来额外的同步开销,因此在单线程环境下性能可能较差。

2、全面剖析

HashMap 和 Hashtable 都实现了 Map 接口,都是用来存储键值对的数据结构

Hashtable 诞生于JDK 1.0,而 HashMap 诞生于JDK 1.2,是用来在单线程下替代 Hashtable 的,而在多线程下要使用 ConcurrentHashMap 替代 Hashtable。

HashMap 和 Hashtable 的区别主要线程安全不同,Hashtable 使用了 synchronized 修饰方法,所以它是线程安全的,而 HashMap 是非线程安全的, 又因为 Hashtable 使用 synchronized 加锁,所以在单线程下,它的性能不如HashMap;最后是 HashMap 支持键、值都允许插入 null,而 Hashtable 不允许 nul 键或 nul值.

3、知识扩展

为什么 Hashtable 不允许插入 null 键和 null 值

相关推荐
j7~5 分钟前
IT 面试指南:从准备到 Offer 的完整路线图(校招 / 实习通用
面试·职场和发展·秋招·春招·实习面试·it后端
Nuanyt8 分钟前
LeetCode Hot 100 · 双指针 3 题 Java
java·笔记·算法·leetcode·双指针
二宝哥9 分钟前
03.Spring AI Embedding 实战:从向量化原理到项目落地
人工智能·spring boot·向量·spring ai
Wang's Blog14 分钟前
Java 项目实战: 交友项目 - 圈子互动
java·开发语言·交友
Rain的Java大神之路16 分钟前
北漂 13 年,我把 Java 家底钉成了这张知识图谱(全站免费)
java·后端·程序员
jimy135 分钟前
构造函数表达式的值类别是:prvalue
开发语言·c++
小嘉丶学长37 分钟前
Day06 · 数据类型与类型检测
开发语言·python·学习·1024程序员节
wuminyu38 分钟前
JVM规范学习总结-Class文件结构
java·linux·c语言·jvm·c++
多弗朗皮卡丘42 分钟前
C++特殊类设计
开发语言·c++·设计模式
小淮AI1 小时前
面试前 48 小时,怎样练表达和复盘:一份个人准备记录
面试·职场和发展