首页 > 编程知识 正文

HashMap的底层实现原理,concurrentmap原理

时间:2023-05-06 09:45:28 阅读:51023 作者:2715

混洗与混洗映射的区别

线程安全性不同

HashMap通常比HashTable更高效,因为HashMap是线程安全的,并且不支持线程同步

扩展

在HashTable中,数组的默认大小为11,扩展方式为原始数组长度*2 1

在HashMap中,数组的默认大小为16,扩展大小为2倍

继承的父类不同

HashMap和Hashtable不仅是作者,父类也不同。

HashMap从AbstractMap类继承,HashTable从Dictionary类继承。

但是,都同时实现了map、Cloneable、Serializable三个接口

实现底层的区分

HashMap可以使用空值作为key,但Hashtable不允许空值作为key

HashMap支持空值作为key,但建议您尽量避免这种使用。 因为如果不小心使用的话,会发生问题,故障诊断会很麻烦

HashTable、HashMap和ConcurrentHashMap的区别

混洗地图

基数组链表的实现。 可以存储空键和空值,线程不安全

混装

基本数组链表的实现在key和value中都不能为null。 线程安全。 通过在修改数据时锁定整个HashTable,实现线程安全的方法效率低下。

ConcurrentHashMap

低层用分段的数组链表实现,是线程安全的

通过将整个映射划分为n个Segment,可以提供相同的线程安全,但效率为n倍,默认值为16倍。

ConcurrentHashMap比HashMap多一个类Segment,Segment可以重新锁定。

ConcurrentHashMap使用锁定段技术来确保线程安全。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。