关于HashMap、HashTable、TreeHash、ConcurrentHashMap的区别
程序员文章站
2022-03-03 08:25:17
...
关于HashMap、HashTable、TreeHash、ConcurrentHashMap的区别
描述:它们都是Map接口的实现类,并且是以键-值对的形式,键(key)是唯一的,值(value)可以重复
1.线程问题
HashMap是线程不安全的,它的方法没有synchronize关键字进行修饰
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200429015214206.png)
HashTable是线程安全的,它的方法有synchronize关键字进行修饰,同步锁效率低
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200429015142728.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2MzYzNDk5,size_16,color_FFFFFF,t_70)
treeMap是可以进行排序的,默认按照键的自然顺序进行升序排序,若要进行降序排序则需要在构造集合时候传递一个比较器
concurrentHashMap:ConCurrentHashMap 就是解决HashMap线程不安全,和HashTable同步锁效率低的问题。ConCurrentHashMap是采用分段锁的技术,在多线程并发的情况下,会先把数据分成一段一段的存储,然后每一段数据配一把锁,当一个线程占用一段数据时,其他段的数据也可以被其他的线程访问
2、空值问题
hashMap:允许key和value为null
hashTable:它的key和value都不可以为null
treeMap:它的key和value都不可以为null
concurrentHashMap:它的key和value都不可以为null
3、数据结构问题
hashMap:HashMap实际上是一个“链表散列”的数据结构,是数组和链表的结合体。HashMap底层就是一个数组结构,数组中的每一项又是一个链表。
hashTable:和HashMap一样,也是一个散列表的数据结构
treeMap:TreeMap的实现是红黑树算法的数据结构
concurrentHashMap:可以说这是一个二级的哈希表
推荐阅读
-
Java自学-集合框架 HashMap和Hashtable的区别
-
HashTable与ConcurrentHashMap的区别
-
HashMap与Hashtable的区别 面试多线程框架
-
HashMap,LinkedHashMap,TreeMap,HashTable的区别 HashMapLinkedHashMapTreeMapHashTable
-
HashTable、ConcurrentHashMap、TreeMap、HashMap关于键值的区别
-
Hashmap、Hashtable、Arraylist的区别
-
Hashmap、Hashtable、Arraylist的区别
-
HashMap与HashTable的区别(含源码分析)
-
HashMap和Hashtable的区别???
-
HashMap和Hashtable的详细区别