HashMap,HashTable,ConcurrentHashMap的区别

news/2024/11/19 10:21:54/

a、HashMap是非线程安全的,HashTable是线程安全的。  

b、HashMap的键和值都允许有null值存在,而HashTable则不行。  

c、因为线程安全的问题,HashMap效率比HashTable的要高。  

HashMap:它根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。 HashMap最多只允许一条记录的键为null,允许多条记录的值为null。HashMap非线程安全,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致。如果需要满足线程安全,可以用 Collections的synchronizedMap方法使HashMap具有线程安全的能力,或者使用ConcurrentHashMap。   Hashtable:Hashtable是遗留类,很多映射的常用功能与HashMap类似,不同的是它承自Dictionary类,并且是线程安全的,任一时间只有一个线程能写Hashtable,并发性不如ConcurrentHashMap,因为ConcurrentHashMap引入了分段锁。


http://www.ppmy.cn/news/98591.html

相关文章

HCIA-MSTP替代技术之设备堆叠

1.什么是堆叠、集群 堆叠:将多个具有堆叠特性的交换设备逻辑上变成一台设备,作为一个整体参与转发 集群:将两个具有集群特性的交换设备组合为逻辑上的一台设备。 集群支持两台设备(css),一般框式交换机支…

k8s介绍

目录 1:k8s概念 2:为什么引入k8s和k8s特性 2.1 为什么要引入k8s: 2.2 k8s特性 3 K8S架构 1:k8s概念 k8s官方网站:Kubernetes Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和…

网页端扫码通过公众号实现微信授权登录

1.参考开发文档: https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html#02.先调起微信授权页面,获取code。(如果用户同意授权,页面将跳转至 redirect_uri/?codeCODE&stateSTAT…

【五】设计模式~~~创建型模式~~~单例模式(Java)

【学习难度:★☆☆☆☆,使用频率:★★★★☆】 5.1. 模式动机 对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一…

五种IO模型

本文分享的是理解五种IO模型的基本概念, 重点是IO多路转接。 什么是IO 其实我们在读写数据的时候,比如使用了write、read、recv、send等等函数,本质是对数据的拷贝。即在写的时候,将数据拷贝到了TCP协议的发送缓冲区中。在读的时候&#xff…

Linux|奇怪的知识|一次性任务at命令的使用

前言: at命令是Linux的一个专有命令,该命令是旧的计划任务atd服务的客户端命令(at命令是c/s形式的软件套件里的client,客户端),主要的用处就是灵活制定一个工作计划,特定时间自动完成你所设定的…

springboot缓存

1. 认识缓存 一级缓存 - 缓存是一种介于数据永久存储介质与数据应用之间的数据临时存储介质 - 使用缓存可以有效的减少低速数据读取过程的次数,提高系统性能 Service public class BookServiceImplCache implements BookService {Autowiredprivate BookDao book…

数据结构之线性表(bsd, sys/queue.h)

数据结构之线性表 Author:Once Day Date:2023年5月27日 参考文档: Linux内嵌链表(sys/queue.h)详解_tissar的博客-CSDN博客嵌入式大杂烩周记第 3 期:sys/queue.h - 知乎 (zhihu.com)queue(7) - Linux manual page (man7.org)queue(3) - Op…