HashMap、Hashtable、ConcurrentHashMap、TreeMap区别
2019-08-03 20:40
239 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ChengHuanHuaning/article/details/98365858
HashMap、Hashtable、ConcurrentHashMap、TreeMap区别
相同点:
1.都是map实现类,都是键值对
2.键都不能重复,可以存储任意类型任意多个数据
3.遍历要通过keySet和entrySet方法来进行遍历
不同点
HashMap线程不安全 可以以null作为key或value 效率高,适用于在Map中插入、删除和定位元素。 (最常用)
TreeMap 线程不安全 key的值不能为null,保存的记录是默认使用自然排序—升序(Comprable),也可以用比较器(Comparator)进行指定排序,所以是有序的。底层基于红黑树(一种自平衡二叉查找树)。
Hashtable线程安全 不能以null作为key或value 效率较低 同步的方法
ConcurrentHashMap 线程安全 不能以null作为key或value 效率较高 同步的代码快,提高了并发效率。
解释
1.相同点方面
他们都是Map接口的实现类,所以都具有Map接口的一部分特征。而Map接口的定义就是:是键值对存在,键不能重复,键值可以为null。
2.不同点方面
HashMap和TreeMap: 都没有使用synchronized关键字来进行对内容进行修饰,所以在多线程操作的时候是不安全的。但是他们没有进行同步,所以效率会比其他的都更高。
HashTable和ConcurrentHashMap: 两个使用了synchronized来进行同步。但两个同步的内容****不相同。HashTable同步的是方法,导致了它的效率不高。ConcurrentHashMap同步的是代码块,所以效率比HashTable效率更高,但没有HashMap和TreeMap高。
相关文章推荐
- 【Map集合总结】HashMap---Hashtable---TreeMap三者的区别和相关的应用!!
- HashTable HashMap TreeMap 本质区别与使用区别 个人解析
- HashTable.HashMap.TreeMap三者之间的区别与联系
- java中HashMap,LinkedHashMap,TreeMap,HashTable的区别
- HashMap、HashTable、LinkedHashMap和TreeMap用法和区别
- HashMap、TreeMap、Hashtable、HashSet和ConcurrentHashMap区别
- 终极讲解:java中HashMap,LinkedHashMap,TreeMap,HashTable的区别
- hashMap hashTable TreeMap linkedHashMap区别
- java中HashMap,LinkedHashMap,TreeMap,HashTable的区别
- Collection,Map,HashMap,hashTable,TreeMap,List,Vector,ArrayList的区别
- Java中Hashmap,Hashtable, LinkedHashmap, TreeMap区别
- java中HashMap,LinkedHashMap,TreeMap,HashTable的区别
- hashMap、hashtable和treeMap的区别
- HashMap、HashTable、LinkedHashMap和TreeMap用法和区别
- 【Java集合篇之Map】HashMap、HashTable、TreeMap、LinkedHashMap的区别以及应用场景
- HashMap, TreeMap, LinkedHashMap, Hashtable区别(二)
- HashMap,LinkedHashMap,Hashtable,TreeMap等区别
- HashMap,HashTable,TreeMap区别和用法
- java中HashMap,LinkedHashMap,TreeMap,HashTable的区别
- HashMap、TreeMap、HashTable区别