首页 > 学院 > 开发设计 > 正文

HashMap、HashSet、Hashtable、concurrentHashmap对比

2019-11-08 00:41:23
字体:
来源:转载
供稿:网友

HashMap

数据结构是以数组+链表的方式进行存储

以entry的形式进行存储,每个entry是一个key-value

容量默认为16,默认负载因子0.75

fail-fast机制(使用迭代器过程中如果有其他进程修改map,抛出异常)

非同步,线程不安全

允许key、value为null

单线程时效率高

HashSet

由hashmap实现(使用hashmap的key保存元素,定义了一个虚拟的object作为value进行存储)

允许null元素

HashTable

通过拉链法实现的哈希表

fail-fast机制

负载因子默认0.75

线程同步、安全的

key、value都不允许为null

concurrentHashMap

hashmap的线程安全类

使用锁分段技术,map下的是segment,每个segment下包含多个hashEntry,默认map下有16个segment

多线程调用时仅锁定当前的segment,这样效率大大的提高了

后面其他博客会详细深入的分析各个类的原理


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表