Java集合系列——Map

Map类图

待补充

HashMap

一个”拉链法”实现的散列表,利用Entry构成的数组,通过hash将Node<key,value>键值对散列到数据中,Entry的子类可以是链表,也可以是树。如果链条太长就用红黑树结构去保证查询的效率。

几个重要的成员变量
size是HashMap的大小,它是HashMap保存的键值对的数量。
threshold是HashMap的阈值,用于判断是否需要调整HashMap的容量。threshold的值=”容量*加载因子”,当HashMap中存储数据的数量达到threshold时,就需要将HashMap的容量加倍。
loadFactor就是加载因子。 默认0.75,一个经验值
modCount是用来实现fail-fast机制的。

支持key或value为null,key为null就存在table[0]的位置上
非线程安全

LinkedHashMap

HashMap的子类,只是给Entry附加了单向链表的特性,保存了数据插入顺序

TreeMap

红黑树实现,保证了有序,增删改查的复杂度都是log(n)。
红黑树可以简单理解为平衡二叉树,当然实际不是。
非线程安全,fast-fail实现

WeakHashMap

结构同HashMap,但有“弱键”特性,使用场景一般是缓存。
非线程安全

HashTable

HashMap的线程安全版,读写强一致性
key、value均不为null

ConcurrentHashMap

HashMap的线程安全版,写时强一致,读时弱一致

Java 7 引入Segment这一结构实现了分段锁
Java 8 Segment结构变化了,摒弃了分段锁,而利用UnSafe的CAS实现同步

IdentityHashMap

很少用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值