您的位置:首页 > 其它

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高。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: