Map:

Map是一个接口不能实例化,Map接口主要有两个实现类:HashMap和TreeMap类。其中,HashMap类按哈希算法来存取对象,而TreeMap类可以对键对象进行排序;

Map提供了一种映射关系,其中的元素是已键值对(key-value)的形式存储,能够实现根据key快速查找value;

Map中的键值对以Entry类型的对象实例形式存在;

键(key值)不可以重复,value值可以;

HashMap:

HashMap是Map的一个重要的实现类,基于哈希表实现;

HashMap中的Entry对象是无序排列的;

Key和Value值都可以为null,但是一个HashMap只能有一个Key值为null的映射(Key不可以重复);

LinkedHashMap:

LinkedHashMap内部有一个链表,保持Key插入的顺序。迭代的时候也时候按照插入的顺序迭代,而且迭代的时候比HashMap快;

LinkedHashMap拥有HashMap的所有特性,比HashMap多维护一个双向链表,因此可以按照插入的顺序从头部或者尾部迭代(是有序的),但是对内存的开销也要比HashMap大、性能也要差一些;

TreeMap:

TreeMap的底层是通过红黑数实现的;没有调优选项,所以该树处于平衡状态;它的 containsKey , get , put and remove 方法的时间复杂度是 log(n) ,并且它是按照 key 的自然顺序(或者指定排序)排列,与 LinkedHashMap 不同, LinkedHashMap 保证了元素是按照插入的顺序排列。

java treemap 内存_Java中Map、HashMap、LinkedHashMap、TreeMap的区别相关推荐

  1. java 减少内存_java中减少内存占用小技巧

    Java做的系统给人的印象是什么?占内存!说道这句话就会有N多人站出来为java辩护,并举出一堆的性能测试报告来证明这一点. 其实从理论上来讲java做的系统并不比其他语言开发出来的系统更占用内存,那 ...

  2. java 数组 内存_Java 中数组的内存分配

    Java 中数组的内存分配 1.Java 程序在运行时,需要在内存中分配空间.为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据和内存管理方式. 2.数组基本概念 数组是 ...

  3. java遍历字典_Java中的HashMap遍历和C#的字典遍历

    Dictionary list = new Dictionary(); list.Add("d", 1); //3.0以上版本 foreach (var item in list) ...

  4. Java中的Map集合及其子类HashMap,LinkedHashMap,TreeMap,ConcurrentHashMap

    一 .Map public interface Map<K,V> 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值.此接口哦取代了Dictionary类,后者完全是 ...

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

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

  6. Java基础之Java8中Map的compute的使用

    Java基础之Java8中Map的compute的使用 一.介绍 Java8更新后,Map接口中提供了compute方法.下面我们先看看官方文档的对它的使用说明. 如果看完上面的还是不太明白的话,看下 ...

  7. Java基础之Java8中map和flatMap的使用

    Java基础之Java8中map和flatMap的使用 一.介绍 首先,看下map和flatMap的官方文档说明 map flatMap 其实单纯的看api说明还是比较抽象,下面我将以几个实战例子来帮 ...

  8. map java 用法_java中map 9种常规用法

    通常来说,Map是一个由键值对组成的数据结构,且在集合中每个键是唯一的.下面就以K和V来代表键和值,来说明一下java中关于Map的九大问题. 0.将Map转换为List类型 在java中Map接口提 ...

  9. JavaSE学习总结(十四)Map集合/Map和Collection的区别/HashMap/LinkedHashMap/TreeMap/集合间的嵌套/Hashtable/Collections工具类

    一.Map集合 我们知道,一个学号就能对应一个学生,并且每个学生的学号都不同,学号就像一个键,对应的学生就是该键对应的值.日常生活中经常能见到这种类似学号对应学生的例子.Java 为了我们更加方便地去 ...

最新文章

  1. Amber16和AmberTools16在CentOS 7下GPU加速版的安装
  2. VMWARE ESXI 虚拟硬盘的格式:精简置备、厚置备延迟置零、厚置备置零
  3. c. Litmxs找女友
  4. OWC做电子表格和图表的试验
  5. document.write()
  6. 【新年假期宅家系列】动漫游戏集中营
  7. 聚簇索引和非聚簇索引的区别_学习索引的一些总结
  8. C语言-Ubuntu下GDB与GCC的安装与使用
  9. Chrome下的语音控制框架MyVoix.js使用篇(二)
  10. c++并发编程之thread::join()和thread::detach()(转)
  11. 关于data.table中i, j, by都为数字的理解
  12. SpringBoot(一)启动相关
  13. 幼儿抽象逻辑思维举例_语言训练幼儿逻辑思维——抽象篇
  14. 愿你和我一样喜欢蛋炒饭
  15. 企业微信企业邮箱设置,微信企业邮箱如何设置?
  16. 山东理工大学ACM平台题答案关于C语言 1177 C语言实验——时间间隔
  17. linux删除序号2的文件,Linux使用rm-rf删除了重要文件?不要慌,我们有恢复神器!-rm文件...
  18. 由access key泄露浅谈云安全
  19. Codevs 1066 引水入城 2010年NOIP全国联赛提高组
  20. 阿里云 centos7静默安装oracle12c,使用navicat 连接oracle数据库

热门文章

  1. arcgis Manager 登陆时提示Incorrect login Information
  2. 行千里,看山城轻轨穿楼越林;致广大,望重庆交通桥上桥下
  3. 小白2分钟学会Visual Studio将引用包打包到NuGet上
  4. Spring AOP注解方式实现日志管理
  5. Spark3.1.1 Docker镜像中修改/etc/hosts
  6. kylin分析引擎:运行原理、维度和Cube等名词解释、核心算法
  7. 请说明一下http和https的区别
  8. JMM主内存和工作内存运行流程图
  9. 【客户下单】前端系统Action数据封装
  10. 为什么下拉框拉不下来_太气人了!《除暴》吴彦祖的浴巾为什么就是掉不下来?...