TreeMap使用场景 优势

优势

先说说红黑树的五点

1 红黑树是牺牲了严格的高度平衡的优越条件为代价,它只要求部分地达到平衡要求,降低了对旋转的要求,从而提高了性能。

2红黑树能够以O(log2 n)的时间复杂度进行搜索、插入、删除操作。此外,由于它的设计,任何不平衡都会在三次旋转之内解决。当然,还有一些更好的,但实现起来更复杂的数据结构能够做到一步旋转之内达到平衡,但红黑树能够给我们一个比较便宜的解决方案。

3结合TreeMap

TreeMap 实现了 SortMap 接口,其能够根据键排序,默认是按键的升序排序,也可以指定排序的比较器,当用 Iterator 遍历 TreeMap 时得到的记录是排过序的,TreeMap 取出来的是排序后的键值

4 红黑树占用的内存更小(仅需要为其存在的节点分配内存),而Hash事先应该分配足够的内存存储散列表,即使有些槽可能弃用

使用场景

答:TreeMap 实现了 SortMap 接口,其能够根据键排序,默认是按键的升序排序,也可以指定排序的比较器,当用 Iterator 遍历 TreeMap 时得到的记录是排过序的,所以在插入和删除操作上会有些性能损耗,TreeMap 的键不能为空,其为非并发安全 Map,此外 TreeMap 基于红黑树实现。

HashMap 是最常用的 Map,其基于哈希散列表实现,主要根据键的 hashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度,当用 Iterator 遍历 HashMap 时得到的记录顺序是随机的,HashMap 允许键和值均为空,其为非并发安全 Map。

所以一般情况下我们选用 HashMap,因为 HashMap 的键值对在取出时是随机的,其依据键的 hashCode 值和键的 equals 方法存取数据,具有很快的访问速度,所以在 Map 中插入、删除及索引元素时其是效率最高的实现。而 TreeMap 取出来的是排序后的键值对,所以效率会低点。

自己的话来说就是TreeMap是按键排序的也可以是按照自己自定义键排序,而HashMap其依据键的 hashCode 值和键的 equals 方法存取数据,具有很快的访问速度。

而 TreeMap 取出来的是排序后的键值,HashMap 的键值对在取出时是随机的

1- 简介

TreeMap的底层实现原理

基于红黑树实现的排序Map

TreeMap增删改查的时间复杂度

TreeMap的增删改查和统计相关的操作的时间复杂度都为 O(logn)

TreeMap的key和value的要求

1 由于实现了Map接口,则key的值不允许重复(重复则覆盖),也不允许为null,按照key的自然顺序排序或者Comparator接口指定的排序方法进行排序。

2 value允许重复,也允许为null,当key重复时,会覆盖此value值。

2- TreeMap的使用场景

考虑如下场景:

  • 需要基于排序的统计功能:

由于TreeMap是基于红黑树的实现的排序Map,对于增删改查以及统计的时间复杂度都控制在O(logn)的级别上,相对于HashMap和LikedHashMap的统计操作的(最大的key,最小的key,大于某一个key的所有Entry等等)时间复杂度O(n)具有较高时间效率。

      需要快速增删改查的存储功能:

相对于HashMap和LikedHashMap 这些 hash表的时间复杂度O(1)(不考虑冲突情况),TreeMap的增删改查的时间复杂度为O(logn)就显得效率较低。

需要快速增删改查而且需要保证遍历和插入顺序一致的存储功能

相对于HashMap和LikedHashMap 这些 hash表的时间复杂度O(1)(不考虑冲突情况),TreeMap的增删改查的时间复杂度为O(logn)就显得效率较低。但是HashMap并不保证任何顺序性。LikedHashMap额外保证了Map的遍历顺序与put顺序一致的有序性。

TreeMap使用场景 优势相关推荐

  1. 有序Map集合:LinkedHashMap和TreeMap该如何选用

    文章目录 前言 一.为什么HashMap是无序的 二.LinkedHashMap如何保证有序性 三.TreeMap的底层原理 四.LinkedHashMap和TreeMap比较 总结 前言 为什么Ha ...

  2. “不设边界”的云知声:从多场景AI芯片到视觉AI,誓要2019营收近3倍

    记者| 杨丽  出品| AI科技大本营 若非要总结 2018.展望 2019 的话,可以借用云知声创始人兼 CEO 黄伟的一句点评:"所有伟大的公司都诞生于真实的生产需求." 20 ...

  3. 科大讯飞全新1024:3大计划,200项A.I.能力,全链路驱动应用场景创新!

    10月24日,2018届科大讯飞全球1024开发者节在合肥奥林匹克体育中心综合馆如约举行,重磅发布了全新升级的科大讯飞<1024计划>! 原中国科学技术部副部长张来武.科大讯飞董事长刘庆峰 ...

  4. 小谈CDN回源函数计算的应用场景

    CDN团队联合函数计算团队近期推出了一个全新功能,即通过CDN把回源流量指向函数计算进行处理,该功能旨在帮助CDN用户能通过函数计算快速处理和便捷处理回源数据为目的,用户仅仅需要在CDN回源地址填写函 ...

  5. nodejs cluster_NodeJS 极简教程 lt;1gt; NodeJS 特点 amp; 使用场景

    1. NodeJS是什么 1.1 Node.js is a JavaScript runtime build on Chrome's V8. Node.js并不是一门语言,JavaScript才是.N ...

  6. HashMap TreeMap专题

    刷leetcode的时候,经常性碰到需要使用HashMap或者TreeMap的场景,今天来总结一些它们的用法: TreeMap public class MapCase {public static ...

  7. qchart能绘制三维_通图GIS | 用多种体展示方案适配复杂三维场景分析、表达

    1背景介绍 三维可视化引擎是通图GIS的重要组成之一.其除了对颜值.特效有高要求外,在空间分析.性能优化.数据组织规范等内核研究上也下足了功夫.在三维的诸多技术点中,体展示技术因其在地质.气象.海洋. ...

  8. MyCAT的作用及使用场景

    作用: 1.实现数据库的读写分离 2.数据库的垂直拆分 3.数据库的水平拆分 ------------------------------------------------------------- ...

  9. 移动互联下半场,云通信迈向场景为王”

    上个月的云栖大会上,阿里云与阿里通信宣布联合打造阿里云通信PaaS平台(C-PaaS). 消息一出,国内云通信行业充斥着一片"狼来了"的呼喊声,网易.腾讯和阿里等互联网巨头的相继入 ...

  10. 选型最佳实践|从业务场景分析直播SDK

    摘要 近两年即时通讯/直播产品炙手可热,市场上针对ToB的产品日益增多,企业该如何去选型呢?本文分享了笔者对于直播产品的思考,将从直播SDK实例功能特性.常见业务场景.注意事项及最佳实践等方面介绍如何 ...

最新文章

  1. layui循环数据并渲染_layui使用表格渲染获取行数据的例子
  2. hung_task_timeout_secs和blocked for more than 120 seconds的解决方法
  3. 网站安全测试工具GoLismero
  4. 中间层体系结构的好处
  5. 如何在代码中将menu隐藏_如何在40行代码中将机器学习用于光学/光子学应用
  6. 这些数据科学家必备的技能,你拥有哪些?
  7. 计算机cmd是什么 74,CMD是什么?
  8. 苹果推送watchOS 5.3.2更新:用户无需升级至iOS13也可使用
  9. JDBC(连接池) -- 02(I)
  10. python数据结构剑指offer-构建乘积数组
  11. 仓储“云服务”初创公司 Clutter获得 6500 万美元 C 轮融资
  12. Scala中的Apply方法与伴生对象
  13. abstract class和interface有什么区别?_程序员必须掌握了解的21个Java核心技术,还在等什么?...
  14. Picture exceed the maximum allowable rotation range
  15. 明华RD-EB读写器-读写代码
  16. uboot 中Nand flash 常用操作命令解析
  17. c语言四象限线性差值算法
  18. 微信小程序入门(一):小程序账号注册 + 微信开发者工具安装
  19. keil4 #pragma anon_unions
  20. 续 Codeforces 596 C Wilbur and Points

热门文章

  1. Unity利用Input类实现摄像机镜头拉近与拉远
  2. Dagger2 依赖注入框架介绍
  3. 硬件工程师的真实前途我说出来可能你们不信
  4. Win10桌面点鼠标右键一直转圈的解决方法
  5. R语言实现非线性回归
  6. 苹果笔记本安装完系统win10后多了osxreserved_Mac重装双系统,苹果笔记本电脑重装系统教程...
  7. RCTF crypto100(1)
  8. java自动洗扑克牌算法_扑克牌 洗牌算法 的java实现
  9. java replaceLast
  10. 西安大唐提车游记——感受古都容颜