目录

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的区别相关推荐

  1. TreeMap、HashMap、LinkedHashMap的区别

    TreeMap.HashMap.LinkedHashMap的区别:

  2. HashTable和HashMap的区别详解

    HashTable和HashMap的区别详解 一.HashMap简介 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同 ...

  3. 036_Hashtable和HashMap的区别

    1. Hashtable和HashMap的区别 1.1. Hashtable线程安全, 效率低; HashMap线程不安全, 效率高 1.2. Hashtable父类是Dictionary; Hash ...

  4. Java之HashMap系列--JDK7与JDK8的HashMap的区别

    原文网址:Java之HashMap系列--JDK7与JDK8的HashMap的区别_IT利刃出鞘的博客-CSDN博客 简介 本文介绍JDK7与JDK8的HashMap的区别. JDK7与JDK8的Ha ...

  5. java中HashMap,LinkedHashMap,TreeMap,HashTable的区别

    java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap Map主要用于存储健值对,根 ...

  6. HashMap Hashtable区别

    •HashMap 和 Hashtable 是 Map 接口的两个典型实现类 •区别:      –Hashtable 是一个古老的 Map 实现类,不建议使用      –Hashtable 是一个线 ...

  7. HashTable和HashMap的区别(网上整理)

    1.hashtable是继承自陈旧的Dictionary类的,而hashmap继承自AbstractMap类的同时对Java1.2引进的Map接口进行了实现. 2.hashtable的方法是同步的,而 ...

  8. hashmap删除指定key_HashTable和HashMap的区别详解

    一.HashMap简介 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长. HashMap是非线程安全的, ...

  9. HashMap Hashtable区别

    2019独角兽企业重金招聘Python工程师标准>>> 1.HashMap基础自AbstractMap,Hashtable继承自Dictionary   public class H ...

最新文章

  1. 部分小区业主抵制人脸识别:我不在家,你都清楚
  2. 动手写一个简单版的谷歌TPU
  3. 世界首个2nm制程芯片公布!这次IBM跑在了台积电三星英特尔前面
  4. 理清 WebSocket 和 HTTP 的关系
  5. Java中List Set Map 是否有序等总结
  6. python装饰器的使用
  7. iOS开发那些事--创建基于故事板的iOS 6的HelloWorld
  8. python中break与continue使用
  9. Updates were rejected because the tip of your current branch is behind
  10. php主页显示商品预览图代码,在ECSHOP留言板页面显示商品缩略图方法
  11. c++两个数组对比去掉重复的元素_每日一道 LeetCode (8):删除排序数组中的重复项和移除元素...
  12. 苹果和谷歌在印度下架数十款中国应用;贾跃亭宣布破产重组完成;Tails 4.8 发布| 极客头条...
  13. .NET利用委托实现动态查询
  14. 通达信画线文件是在服务器吗,通达信画线工具的使用说明★★★★
  15. 说话没技巧,母猪都嫌吵!
  16. java opencv 图片读取,边缘化,写出图片操作
  17. 熟练运用计算机快捷键,有效利用Excel和电脑快捷键
  18. Gif录制工具Gyazo 官方版
  19. Python 基于tkinter和sqlite3的会员管理系统
  20. win10切换输入法快捷键_软件快捷键失灵,可能是你没有安装美式键盘

热门文章

  1. CE+OD无法附加游戏进程的破解方法
  2. 永远不要以为别人真正明白你的话
  3. 数据仓库数据质量管理【转】
  4. win10 无法访问移动硬盘 提示“参数错误”
  5. CSS定义li前小点( · )的样式
  6. solr初印象 转载自《闵晓荣(jarorwar)的博客》
  7. java中封装的好处_【Java基础】java封装的好处
  8. css第04天今天学习盒子摆放,大家一起学习
  9. 梯度下降算法_梯度下降算法中的偏导公式推导
  10. 新云asp转php,新云CMS 4.0 转换 PHPcom 1.3.0 工具