当前位置: 首页 > news >正文

总结HashMap和TreeMap的区别

Map:在数组中是通过数组下标来对 其内容进行索引的,而Map是通过对象来对 对象进行索引的,用来 索引的对象叫键key,其对应的对象叫值value;

1、HashMap是通过hashcode()对其内容进行快速查找的;HashMap中的元素是没有顺序的;

TreeMap中所有的元素都是有某一固定顺序的,如果需要得到一个有序的结果,就应该使用TreeMap;

2、HashMap和TreeMap都不是线程安全的;

3、HashMap继承AbstractMap类;覆盖了hashcode() 和equals() 方法,以确保两个相等的映射返回相同的哈希值;

TreeMap继承SortedMap类;他保持键的有序顺序;

4、HashMap:基于hash表实现的;使用HashMap要求添加的键类明确定义了hashcode() 和equals() (可以重写该方法);为了优化HashMap的空间使用,可以调优初始容量和负载因子;

TreeMap:基于红黑树实现的;TreeMap就没有调优选项,因为红黑树总是处于平衡的状态;

5、HashMap:适用于Map插入,删除,定位元素;

​ TreeMap:适用于按自然顺序或自定义顺序遍历键(key);

6、HashMap:默认数组长度: 16,数组最大长度: 2^30,扩容因子: 0.75f,列表转红黑树阈值: 8,红黑树转列表阈值: 6,列表转红黑树最小数组长度: 64

​ TreeMap:没发现有范围控制

如果大家对java架构相关感兴趣,可以关注下面公众号,会持续更新java基础面试题, netty, spring boot,spring cloud等系列文章,一系列干货随时送达, 超神之路从此展开, BTAJ不再是梦想!

架构殿堂

相关文章:

  • Spring AOP中pointcut expression表达式解析 及匹配多个条件
  • typora+picgo+gitee,轻松搞定图片上传
  • 转载-C#事件的使用和讲解
  • 详细描述Error和Exception(运行期和编译期)的区别
  • 线程的生命周期以及状态
  • ArcGIS AddIn调用ArcMap自带的对话框
  • 总结Synchronized与Lock的区别
  • 带你了解 java 各种锁
  • 求一个版本号的正则表达式,版本号的格式可以是1.1或1.1.2或10000这个样子的
  • 序列化和反序列化总结
  • 适配器模式
  • 运行django项目时出错
  • 何为JAVA内部类?
  • 数据库原理中的范式
  • JAVA线程池如何调优
  • 【译】JS基础算法脚本:字符串结尾
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • 【翻译】babel对TC39装饰器草案的实现
  • Android Volley源码解析
  • es6要点
  • ESLint简单操作
  • Leetcode 27 Remove Element
  • Linux gpio口使用方法
  • Nacos系列:Nacos的Java SDK使用
  • Ruby 2.x 源代码分析:扩展 概述
  • vue脚手架vue-cli
  • Vultr 教程目录
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 规范化安全开发 KOA 手脚架
  • 使用 @font-face
  • 首页查询功能的一次实现过程
  • 一份游戏开发学习路线
  • ​2021半年盘点,不想你错过的重磅新书
  • #每天一道面试题# 什么是MySQL的回表查询
  • (12)Hive调优——count distinct去重优化
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (SpringBoot)第二章:Spring创建和使用
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (层次遍历)104. 二叉树的最大深度
  • (二开)Flink 修改源码拓展 SQL 语法
  • (一)Linux+Windows下安装ffmpeg
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .NET Framework杂记
  • .net web项目 调用webService
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .net 简单实现MD5
  • .net 设置默认首页
  • .NET开发人员必知的八个网站
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • .net中调用windows performance记录性能信息
  • @EnableWebMvc介绍和使用详细demo
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...