Java 里的 Map 有哪几种实现?

简介: Java 里的 Map 有哪几种实现?

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

本文仅用于交流学习,未经作者允许,禁止转载,更勿做其他用途,违者必究。
文章对你有所帮助的话,欢迎给个赞或者 star,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习

目录
相关文章
|
5天前
|
存储 安全 Java
java集合框架复习----(4)Map、List、set
这篇文章是Java集合框架的复习总结,重点介绍了Map集合的特点和HashMap的使用,以及Collections工具类的使用示例,同时回顾了List、Set和Map集合的概念和特点,以及Collection工具类的作用。
java集合框架复习----(4)Map、List、set
|
2月前
|
存储 算法 Java
滚雪球学Java(65):深入理解Java中的Map接口:实现原理剖析
【6月更文挑战第19天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
25 3
滚雪球学Java(65):深入理解Java中的Map接口:实现原理剖析
|
1月前
|
存储 安全 Java
Java基础之集合Map
【7月更文挑战第8天】Java中的Map集合以键值对方式存储数据,如`Map<"name", "张三">`。Map接口定义了存取、判断、移除等操作,包括`put`、`get`、`containsKey`等方法。HashMap是最常用的实现,基于哈希表,允许null键值,但不保证顺序。其他实现包括同步的Hashtable、处理属性文件的Properties、保持插入顺序的LinkedHashMap、基于红黑树的TreeMap、弱引用的WeakHashMap、并发安全的ConcurrentHashMap和针对枚举优化的EnumMap。
26 4
|
2月前
|
存储 Java API
探讨Java中交换Map的Key和Value值的技术
探讨Java中交换Map的Key和Value值的技术
18 2
|
2月前
|
缓存 Java 测试技术
探讨Java中遍历Map集合的最快方式
探讨Java中遍历Map集合的最快方式
27 1
|
1月前
|
存储 安全 Java
Java Map集合:选择正确的实现方式
Java Map集合:选择正确的实现方式
|
1月前
|
Java
Java Map.Entry接口详解
Java Map.Entry接口详解
|
2月前
|
Java API 存储
java中Map遍历详解
java中Map遍历详解
|
2月前
|
Java
java中Stream流中的forEach、filter、map、count、limit、skip、concat
java中Stream流中的forEach、filter、map、count、limit、skip、concat
40 0
|
2月前
|
Java
Java集合之map 集合使用
Java集合之map 集合使用
15 0