TreeMap和HashMap的区别
目录
1、区别
2、效率区别
3、相同点
总结:
1、区别
打开源码
TreeMap
HashMap
我们可以看到 HashMap是直接实现了Map接口,而TreeMap则是实现了NavigableMap接口,而这个NavigableMap接口拓展了SortedMap接口,SortMap接口又拓展了Map接口。所以我们可以这样看
从这就可以看出因为TreeMap实现了SortedMap接口所以说TreeMap是有序的,HashMap是无序的。
TreeMap中默认是根据键排序(升序),我们也可以通过重写comparaTo方法或是使用比较器了来更改排序规则。
2、效率区别
由名字我们就可以知道,TreeMap底层是由树(红黑树)实现的,而HashMap是由哈希桶实现的。由于哈希算法本身的优势,我们再进行增删查改的时候。HashMap的时间复杂度是O(1),是通过哈希函数计算的哈希地址。而我们的红黑树就不具有这样的优势时间复杂度是O(log2 n)。
3、相同点
两者都不是线性安全。
总结:
1、HashMap无序,TreeMap有序。
2、HashMap覆盖了equals()方法和hashcode()方法,这使得HashMap中两个相等的映射返回相同的哈希值;
TreeMap则是实现了SortedMap接口,使其有序。
3、HashMap的工作效率更高,而TreeMap则是基于树的增删查改。更推荐使用HashMap。
4、HashMap基于数组+链表+红黑树(jdk1.8之后)实现,TreeMap是基于红黑树实现。
5、两者都不是线性安全的。
TreeMap和HashMap的区别相关推荐
- TreeMap、HashMap、LinkedHashMap的区别
TreeMap.HashMap.LinkedHashMap的区别:
- HashTable和HashMap的区别详解
HashTable和HashMap的区别详解 一.HashMap简介 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同 ...
- 036_Hashtable和HashMap的区别
1. Hashtable和HashMap的区别 1.1. Hashtable线程安全, 效率低; HashMap线程不安全, 效率高 1.2. Hashtable父类是Dictionary; Hash ...
- Java之HashMap系列--JDK7与JDK8的HashMap的区别
原文网址:Java之HashMap系列--JDK7与JDK8的HashMap的区别_IT利刃出鞘的博客-CSDN博客 简介 本文介绍JDK7与JDK8的HashMap的区别. JDK7与JDK8的Ha ...
- java中HashMap,LinkedHashMap,TreeMap,HashTable的区别
java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap Map主要用于存储健值对,根 ...
- HashMap Hashtable区别
•HashMap 和 Hashtable 是 Map 接口的两个典型实现类 •区别: –Hashtable 是一个古老的 Map 实现类,不建议使用 –Hashtable 是一个线 ...
- HashTable和HashMap的区别(网上整理)
1.hashtable是继承自陈旧的Dictionary类的,而hashmap继承自AbstractMap类的同时对Java1.2引进的Map接口进行了实现. 2.hashtable的方法是同步的,而 ...
- hashmap删除指定key_HashTable和HashMap的区别详解
一.HashMap简介 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长. HashMap是非线程安全的, ...
- HashMap Hashtable区别
2019独角兽企业重金招聘Python工程师标准>>> 1.HashMap基础自AbstractMap,Hashtable继承自Dictionary public class H ...
最新文章
- 部分小区业主抵制人脸识别:我不在家,你都清楚
- 动手写一个简单版的谷歌TPU
- 世界首个2nm制程芯片公布!这次IBM跑在了台积电三星英特尔前面
- 理清 WebSocket 和 HTTP 的关系
- Java中List Set Map 是否有序等总结
- python装饰器的使用
- iOS开发那些事--创建基于故事板的iOS 6的HelloWorld
- python中break与continue使用
- Updates were rejected because the tip of your current branch is behind
- php主页显示商品预览图代码,在ECSHOP留言板页面显示商品缩略图方法
- c++两个数组对比去掉重复的元素_每日一道 LeetCode (8):删除排序数组中的重复项和移除元素...
- 苹果和谷歌在印度下架数十款中国应用;贾跃亭宣布破产重组完成;Tails 4.8 发布| 极客头条...
- .NET利用委托实现动态查询
- 通达信画线文件是在服务器吗,通达信画线工具的使用说明★★★★
- 说话没技巧,母猪都嫌吵!
- java opencv 图片读取,边缘化,写出图片操作
- 熟练运用计算机快捷键,有效利用Excel和电脑快捷键
- Gif录制工具Gyazo 官方版
- Python 基于tkinter和sqlite3的会员管理系统
- win10切换输入法快捷键_软件快捷键失灵,可能是你没有安装美式键盘
热门文章
- CE+OD无法附加游戏进程的破解方法
- 永远不要以为别人真正明白你的话
- 数据仓库数据质量管理【转】
- win10 无法访问移动硬盘 提示“参数错误”
- CSS定义li前小点( · )的样式
- solr初印象 转载自《闵晓荣(jarorwar)的博客》
- java中封装的好处_【Java基础】java封装的好处
- css第04天今天学习盒子摆放,大家一起学习
- 梯度下降算法_梯度下降算法中的偏导公式推导
- 新云asp转php,新云CMS 4.0 转换 PHPcom 1.3.0 工具