当前位置 : 主页 > 编程语言 > c语言 >

Java 里的 Map 有哪几种实现?

来源:互联网 收集:自由互联 发布时间:2023-08-28
1.HashMap 允许key和value为空 ,非线程安全。创建的时候通常常用默认的构造方法,其他的构造方法也可以自己去设置初始大小和负载因子,不设置的话初始值大小为16,设置的话应为2的

1.HashMap

允许key和value为空 ,非线程安全。创建的时候通常常用默认的构造方法,其他的构造方法也可以自己去设置初始大小和负载因子,不设置的话初始值大小为16,设置的话应为2的n次幂,最大是2的30次幂,如果设置的不是2的n次幂则会往上去离他最近的2的n次幂。


2.HashTable

不允许key和value为空。初始容量为11,扩容时。以原来的二倍➕1进行扩容,是线程安全的,每个方法都有synchronized修饰,但是性能并不高。


3.concurrentHashMap

实现了concurrentMap接口,concurrentMap又实现了,Map 接口。所以concurrentHashMap也是Map的一种实现。他的大小和扩容机制都和HashMap一样,区别在于put的时候为了线程安全会加锁,但是不是像HashTable那样整体加锁,而是对key对应的node加锁,这样如果两个线程同时put,如果根据key计算的位置不同是完全不影响的,只有两个key经过hash扰动并求模后的值仍然一样时才会等待


作者:KJ.JK

上一篇:Journaler 的作用
下一篇:没有了
网友评论