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 值

相关推荐
studyForMokey几秒前
【Android 面试】Paging3
android·面试·职场和发展
云和数据.ChenGuang几秒前
AI 工程师相关就业岗位(细分,偏工程落地,由底层到上层)
服务器·开发语言·人工智能·python
爱读书的小胖10 分钟前
Codewars:Last digit of a large number(C)解题分析
c语言·开发语言·r语言
企业数字化笔记11 分钟前
租户停用后数据和任务怎么处理?冻结、恢复与保留策略的实现
android·java·spring boot
CarIise18 分钟前
Spring MVC 请求参数绑定与常用注解
java·spring·mvc
考研保研资料分享23 分钟前
211英语专业跨保清华法学:2022年法学面试与口译考核复盘
面试·职场和发展
码途行者23 分钟前
处理超时未支付订单:两套轻量化方案,附 PHP 极简实现
开发语言·redis·php
云和数据.ChenGuang27 分钟前
LangChain 实战指南:从入门到构建智能应用
开发语言·人工智能·python·langchain
vx_Biye_Design28 分钟前
PHP中医养生馆预约系统60841-计算机课程设计、毕业设计
vue.js·spring boot·后端·mysql·php·课程设计·express
const_qiu30 分钟前
第三章 04:3.6 基础调用链的构建
开发语言·python