当前位置: 首页 > news >正文

HashTable, HashMap 和 ConcurrentHashMap

HashTable, HashMap 和 ConcurrentHashMap 都是 Java 集合框架中的类,用于存储和操作键值对。它们之间存在一些关键区别,如下所示

1.同步性
HashTable:线程安全,所有的方法都是同步的(synchronized),可以在多线程环境下使用。

HashMap:线程不安全,不提供同步保证。如果需要在多线程环境下使用,使用 Collections.synchronizedMap() 或 ConcurrentHashMap。

ConcurrentHashMap:线程安全,采用分段锁机制,允许并发访问。在多线程环境下性能优于 HashTable。

2.空键(null key)和空值(null value)

HashTable:不允许使用空键和空值。

HashMap:允许一个空键和任意数量的空值。

ConcurrentHashMap:不允许使用空键和空值。
遍历时的迭代器:

HashTable:返回的迭代器是 Fail-Safe 的,不会抛出 ConcurrentModificationException。

HashMap:返回的迭代器是 Fail-Fast 的,如果在迭代过程中结构发生变化,会抛出 ConcurrentModificationException。

ConcurrentHashMap:返回的迭代器是 Weakly Consistent 的,不会抛出 ConcurrentModificationException,但可能无法反映最新的修改。

3.性能

HashTable:因为所有方法都是同步的,所以在高并发环境下性能较差。

HashMap:在单线程环境下性能较好,但不适用于多线程环境。

ConcurrentHashMap:通过分段锁机制实现高并发访问,在多线程环境下性能优于 HashTable。

4.继承关系

HashTable:继承自 Dictionary 类,实现了 Map 接口。

HashMap:继承自 AbstractMap 类,实现了 Map 接口。

ConcurrentHashMap:继承自 AbstractMap 类,实现了
ConcurrentMap 和 Serializable 接口。

5.底层实现

HashTable 和 HashMap:都基于哈希表实现。

ConcurrentHashMap:在 Java 8 之前,采用分段锁机制实现;从 Java 8 开始,采用了锁分离技术,结合了哈希表和链表/红黑树。

相关文章:

HashTable, HashMap 和 ConcurrentHashMap

HashTable, HashMap 和 ConcurrentHashMap 都是 Java 集合框架中的类,用于存储和操作键值对。它们之间存在一些关键区别,如下所示: 1.同步性: HashTable:线程安全,所有的方法都是同步的(synchr…...

ToBeWritten之IoT 技战法

也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 转移发布平台通知:将不再在CSDN博客发布新文章,敬…...

基于ASP.NET开发的医院手术麻醉信息管理系统源码 项目源码

系统主要功能介绍: 门诊科室管理系统:手术快速申请、手术申请、手术审核 麻醉科管理系统:手术安排、术后处方、术后小结、PCS实施及管理记录、手术流程 手术护理系统:手术安排、安排临时手术、添加急诊手术、局麻手术护理、整体护…...

伪加密超具体破解办法,直击原理底层,细致演示!!!

前言: 由于我自己目前在misc和取证工作中,也遇到很多压缩包的问题,我个人非常喜欢做压缩包的题目,但也会遇到伪加密问题难以破解,全网ctf教程我都看完了,但是都觉得不够具体,所以我写一篇博客&…...

ChatGPT大规模封锁亚洲地区账号

我是卢松松,点点上面的头像,欢迎关注我哦! 在毫无征兆的情况下,从3月31日开始OpenAI大规模封号,而且主要集中在亚洲地区,特别是ip地址在台湾、日本、香港三地的,命中率目测40%。新注册的账号、…...

脂肪酸脂质Myristic acid PEG NHS,Myristic-acid PEG NHS ester,肉豆蔻酸PEG活性酯,具有优异疏水性

一、基础产品数据: 中文名:肉豆蔻酸PEG N-羟基琥珀酰亚胺,肉豆蔻酸PEG活性酯 英文名:Myristic acid PEG NHS,Myristic-acid PEG NHS ester,Myristic acid PEG SE 结构式(Structural)…...

MFC - CFormView类学习1

CFormView简介 MFC提供了一个名为CFormView的特殊视图类,我们称其为表单视图。表单视图是指用控件来输入和输出数据的视图,用户可以方便地在表单视图中使用控件。表单视图具有对话框和滚动视图的特性,它使程序看起来象是一个具有滚动条的对话…...

图像预处理方法

图像预处理 膨胀腐蚀概述 ⚫ 膨胀、腐蚀属于形态学的操作, 简单来说就是基于形状的一系列图像处理操作 ⚫ 膨胀腐蚀是基于高亮部分(白色)操作的, 膨胀是対高亮部分进行膨胀, 类似“领域扩张”, 腐蚀是高亮部分被腐蚀, 类似“领域被蚕食” ⚫ 膨胀腐蚀的应用和功能: 消除噪声…...

【蓝桥杯C/C++】专题六:动态规划

专题六:动态规划 目录专题六:动态规划导读什么是动态规划解决的问题解题步骤动态规划应该如何debug记忆化搜索斐波那契数题目代码题解爬楼梯题目代码题解使用最小花费爬楼梯题目代码题解不同路径题目题解dfsdp凑硬币题目题解dfsdp滑雪题目代码题解汉罗塔…...

图的定义和基本术语

图的定义和基本术语1.图的定义2.图的基本术语3.图的分类1.图的定义 图是由顶点和有穷非空集合和顶点边的集合吗,表示为G(V,E)。 G表示一个图,V是图G的顶点(数据元素)的集合,E是图G中顶点之间边的集合。在图中&#xf…...

041:cesium加载Blue Marble地图

第041个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中加载Blue Marble地图。Blue Marble是一个术语,用来描述星球漂浮在浩瀚太空中的形象。早在 1972 年,阿波罗 17 号任务的工作人员就首次捕捉到了地球的标志性卫星图像,并将其称为“Blue Marble”。从那时起,NA…...

【概念梳理】激活函数

一、引言 常用的激活函数如下: 1、Sigmoid函数 2、Tanh函数 3、ReLU函数 4、ELU函数 5、PReLU函数 6、Leaky ReLU函数 7、Maxout函数 8、Mish函数 二、激活函数的定义 多层神经网络中,上层节点的输出和下层节点的输入之间具有一个函数关系,…...

【python】@property 和 @staticmethod

property 和 staticmethod 是 Python 中的两个装饰器,它们分别用于在类中创建属性或静态方法。它们的作用如下: property property:用于将类的一个方法作为属性访问。在 Python 中,使用“getter” 和“setter”方法来实现属性&a…...

Spring题集 - Spring AOP相关面试题总结

文章目录01. Spring AOP 的理解?02. Spring AOP 思想的代码实现03. Spring AOP 的相关术语有哪些?04. Spring AOP 基于注解的切面实现?05. Spring AOP 的通知有哪些类型?06. AOP 有哪些实现方式?07. Spring AOP 和 AspectJ AOP 有…...

分考场

[蓝桥杯 2017 国 C] 分考场(假题&#xff1a;最小色数) 题目描述 nnn 个人参加某项特殊考试。 为了公平&#xff0c;要求任何两个认识的人不能分在同一个考场。 求最少需要分几个考场才能满足条件。 输入格式 第一行&#xff0c;一个整数 n(1<n<100)n(1<n<100…...

BI技巧丨DAX Studio

DAX Studio DAX Studio&#xff0c;作为PowerBI外部插件使用率排名第一的插件&#xff0c;相信各位小伙伴或多或少都听说过&#xff0c;那么DAX Studio具体有哪些功能呢&#xff1f; PS&#xff1a;DAX Studio的下载链接&#xff0c;小伙伴们可以自行搜索&#xff0c;这里就不…...

Java 8常用时间 API

Date: 你不爱我了吗? &#x1f6a1;本地时间时区相关格式化在Java 8中&#xff0c;Instant类用于表示时间戳&#xff0c;相当于旧的Date类&#xff1b;LocalDateTime类用于表示日期和时间&#xff0c;相当于旧的Calendar类&#xff1b;DateTimeFormatter类用于格式化日期和时间…...

C++运算符

C运算符 运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C 内置了丰富的运算符&#xff0c;并提供了以下类型的运算符&#xff1a; 算术运算符关系运算符逻辑运算符位运算符赋值运算符杂项运算符 1. 算术运算符 运算符描述实例把两个操作数相加A B 将得到 30-从第…...

低/无代码赋能企业,IT与业务的角色正在悄然改变

现在这个社会&#xff0c;年轻人的压力是真的大&#xff0c;需要会的技能多到数不清。想学习多点技能也不知道去哪学&#xff0c;主要是网络资源太丰富&#xff0c;很难找到一个适合自己的。那接下来推荐4个大神级别的资源网站你可一定得码住&#xff0c;都是年轻人特别 …...

SpringCloud学习2(Spring Cloud Netflix)负载均衡Ribbon、Feign负载均衡、Hystix服务熔断

文章目录负载均衡RibbonRibbon的作用代码实现生产者cloud1_provider实现配置文件在HiController中编写以下代码启动集群消费者cloud1_consumer实现引入依赖编写配置文件编写启动类&#xff0c;并给RestTemplate配置LoadBalanced注解编写RestController来测试Feign负载均衡简介F…...

从WechatRealFriends迁移至WeFriends:解决微信好友管理痛点的完整指南

从WechatRealFriends迁移至WeFriends&#xff1a;解决微信好友管理痛点的完整指南 【免费下载链接】WechatRealFriends 微信好友关系一键检测&#xff0c;基于微信ipad协议&#xff0c;看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/Wechat…...

终极指南:Kalibr视觉惯性标定中的外参初始化策略全解析

终极指南&#xff1a;Kalibr视觉惯性标定中的外参初始化策略全解析 【免费下载链接】kalibr The Kalibr visual-inertial calibration toolbox 项目地址: https://gitcode.com/gh_mirrors/ka/kalibr Kalibr作为一款强大的视觉惯性标定工具箱&#xff08;The Kalibr visu…...

华为,华三交换机开启snmp的命令

华为&#xff0c;华三交换机开启snmp的命令 配置community指定版本为v2c, v3&#xff08;支持这2个版本&#xff09;指定源接口 snmp-agent snmp-agent community read public snmp-agent sys-info version v2c v3 snmp-agent protocol source-interface MEth0/0/0配置完成后&a…...

QWEN-AUDIO应用案例:如何制作一个会讲故事的AI语音玩具

QWEN-AUDIO应用案例&#xff1a;如何制作一个会讲故事的AI语音玩具 1. 项目背景与创意来源 1.1 儿童教育市场的语音需求 在当今儿童教育领域&#xff0c;互动性和趣味性成为产品设计的关键要素。传统的故事机往往只能播放预录制的音频内容&#xff0c;缺乏个性化和互动能力。…...

Wan2.2-I2V-A14B开源大模型教程:模型权重结构解析与LoRA微调入门

Wan2.2-I2V-A14B开源大模型教程&#xff1a;模型权重结构解析与LoRA微调入门 1. 模型概述与环境准备 Wan2.2-I2V-A14B是一款先进的文生视频开源大模型&#xff0c;能够根据文本描述生成高质量视频内容。本教程将深入解析模型权重结构&#xff0c;并指导您完成LoRA微调入门实践…...

Wan2.2-I2V-A14B开发者实践:基于FastAPI封装私有视频生成服务

Wan2.2-I2V-A14B开发者实践&#xff1a;基于FastAPI封装私有视频生成服务 1. 镜像概述与核心优势 Wan2.2-I2V-A14B是一款专为文本到视频生成任务优化的私有部署镜像&#xff0c;特别针对RTX 4090D 24GB显存显卡进行了深度优化。这个镜像将帮助开发者快速搭建私有视频生成服务…...

阿里Qwen3Guard-Gen-WEB实战:从HTTP到HTTPS的安全升级

阿里Qwen3Guard-Gen-WEB实战&#xff1a;从HTTP到HTTPS的安全升级 1. 引言 1.1 为什么需要安全升级 在当今互联网环境中&#xff0c;HTTP协议已经无法满足基本的安全需求。当您部署阿里Qwen3Guard-Gen-WEB这款强大的内容安全审核工具时&#xff0c;如果仍然使用HTTP协议&…...

腾讯地图API实战:5分钟搞定经纬度录入与地图选点功能(Vue版)

腾讯地图API实战&#xff1a;5分钟搞定经纬度录入与地图选点功能&#xff08;Vue版&#xff09; 在当今的Web开发中&#xff0c;地图功能已成为许多应用的标配需求。无论是电商平台的店铺定位&#xff0c;还是社交应用的位置分享&#xff0c;甚至是企业内部系统的区域管理&…...

AI小白/程序员必备:收藏这份大模型Agent落地实战指南,从零到企业级系统全解析!

AI小白/程序员必备&#xff1a;收藏这份大模型Agent落地实战指南&#xff0c;从零到企业级系统全解析&#xff01; 本文系统介绍了构建可落地的AI Agent系统的六大核心模块&#xff0c;包括运行环境&#xff08;Docker本地&#xff09;、MCP服务工具集、LangChain与LangGraph框…...

Cogito-V1-Preview-Llama-3B开发:微信小程序智能客服对接实战

Cogito-V1-Preview-Llama-3B开发&#xff1a;微信小程序智能客服对接实战 最近有不少朋友在问&#xff0c;把大模型部署到服务器上之后&#xff0c;怎么才能让微信小程序用起来&#xff1f;今天我就以星图GPU平台上部署的Cogito-V1-Preview-Llama-3B模型为例&#xff0c;跟大家…...