首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏小赵的Java学习

    源码研究——TreeMap

    <K,V> left; // 左边子的节点 java.util.TreeMap.Entry<K,V> right; // 右边子的节点 java.util.TreeMap.Entry public TreeMap() { comparator = null; } 构造方法二: 除了用默认比较器,TreeMap还提供了支持外部比较器来初始化构造方法。 public TreeMap(Comparator<? super K> comparator) { this.comparator = comparator; } 构造方法三: 制定一个Map的TreeMap. public TreeMap TreeMap(SortedMap<K, ?

    56230编辑于 2022-12-02
  • 来自专栏coolblog.xyz技术专栏

    TreeMap 源码分析

    另一方面,由于 TreeMap 基于红黑树实现,这为 TreeMap 保持键的有序性打下了基础。总的来说,TreeMap 的核心是红黑树,其很多方法也是对红黑树增删查基础操作的一个包装。 所以只要弄懂了红黑树,TreeMap 就没什么秘密了。 二、概览 TreeMap继承自AbstractMap,并实现了 NavigableMap接口。 以上就是 TreeMap 的继承体系,描述起来有点乱,不如看图了: ? 上图就是 TreeMap 的继承体系图,比较直观。 3.1 查找 TreeMap基于红黑树实现,而红黑树是一种自平衡二叉查找树,所以 TreeMap 的查找操作流程和二叉查找树一致。 return ((TreeMap<E,?

    58040发布于 2019-02-15
  • 来自专栏吉林乌拉

    TreeMap源码解析

    现在我们已经知道了有关红黑树的所有知识,下面我们分析一下TreeMap的底层源码,看TreeMap底层是怎么实现红黑树的逻辑的。我们还是和其它集合一样还是先看TreeMap的初始化。 ? ? 上面是TreeMap的无参构造函数,我们发现当我们通过参构造函数创建TreeMap对象时,并不会执行底层树结构的初始化,而只是将comparator设置为空。 那么通过我们以往分析其它集合时总结的规律,TreeMap的初始化一定是在第一次调用put方法时执行的。下面我们将重点看一下TreeMap中的put方法。 ? ? ? ? ? 总结 在TreeMap中不允许用null做为key保存到TreeMap集合中 我们在分析源码时并没有发现同步关键字synchronized,这就说明TreeMap也不是一个线程安全的集合类 我们在分析源码时知道 TreeMap每次都添加元素时都会进行key的比较,所以我们在使用TreeMap集合是必须保证存储在TreeMap中的元素是可以比较的,否则虚拟机会直接抛出一场。

    63920发布于 2019-08-14
  • 来自专栏Java基础

    【集合框架TreeMap

    一、TreeMap 是什么?为什么需要它? TreeMap 是 Java 集合框架中 SortedMap 和 NavigableMap 接口的核心实现。 TreeMap 和 HashMap 的主要区别? TreeMap 支持 null 键吗? 有没有线程安全的 TreeMap? 答: TreeMap 本身不是线程安全的。 理解 TreeMap,不仅是掌握一个集合类,更是理解了 红黑树、自平衡、有序数据结构的设计智慧。 在需要“顺序”的场景中,TreeMap 是你最可靠的伙伴。

    36510编辑于 2025-08-28
  • 来自专栏Android开发经验分享

    TreeMap源码解析

    转载请以链接形式标明出处: 本文出自:103style的博客 base on jdk_1.8.0_77 目录 红黑树简介 TreeMap简介 TreeMap的成员变量介绍 TreeMap的构造函数 TreeMap 实现了Cloneable接口,意味着 它能被克隆。 TreeMap 实现了java.io.Serializable接口,意味着 它支持序列化。 TreeMap基于红黑树 实现。 TreeMap的基本操作 containsKey、get、put 和 remove 的时间复杂度是 log(n)。 另外,TreeMap是 非同步 的。 <Integer, Integer> treeMap = new TreeMap<>(); for (int i = 0; i < s.size(); i++) { treeMap.put public TreeMap() { comparator = null; } public TreeMap(Comparator<?

    58720编辑于 2022-12-19
  • 来自专栏房东的猫

    TreeMap 源码解析

    另一方面,由于 TreeMap 基于红黑树实现,这为 TreeMap 保持键的有序性打下了基础。总的来说,TreeMap 的核心是红黑树,其很多方法也是对红黑树增删查基础操作的一个包装。 以上就是 TreeMap 的继承体系,描述起来有点乱,不如看图了: image.png 上图就是 TreeMap 的继承体系图,比较直观。 如简介一节所说,只要弄懂了红黑树原理,TreeMap 就没什么秘密了。 查找 TreeMap基于红黑树实现,而红黑树是一种自平衡二叉查找树,所以 TreeMap 的查找操作流程和二叉查找树一致。 TreeMap 查找和此类似,只不过在 TreeMap 中,节点(Entry)存储的是键值对<k,v>。在查找过程中,比较的是键的大小,返回的是值,如果没找到,则返回null。 return ((TreeMap<E,?

    62231发布于 2021-09-23
  • 来自专栏迁移内容

    JAVA集合:TreeMap

    一、TreeMap 概述 Map 在 Java 里面分为两种:HashMap 和 TreeMap,区别就是 TreeMap 有序,HashMap 无序。 ---- 三、TreeMap 的使用 1、构造方法 方法名 方法说明 方法名 方法说明 public TreeMap() 创建一个空TreeMap,keys按照自然排序 public TreeMap(Comparator comparator) 创建一个空TreeMap,按照指定的comparator排序 public TreeMap(Map m) 由给定的map创建一个TreeMap,keys按照自然排序 public TreeMap(SortedMap m) 由给定的有序map创建TreeMap,keys按照原顺序排序 2、常用方法-增添元素 V put(K key, V value):将指定映射放入该TreeMap ():返回该TreeMap的第一个(最小的)映射 K firstKey():返回该TreeMap的第一个(最小的)映射的key Map.Entry<K, V> lastEntry():返回该TreeMap

    55210编辑于 2022-12-01
  • 来自专栏快乐阿超

    TreeMap踩坑

    ──胡适 今天使用TreeMap踩坑了 代码如下:     @Test void test() { Map<Integer, Object> map = new TreeMap<>(Comparator.comparing 于是我们可以指定计算结果相同时策略: @Test void test() { Map<Integer, Object> map = new TreeMap<>(Comparator.

    27730编辑于 2023-09-03
  • 来自专栏FREE SOLO

    Hashtable、HashMap、TreeMap辨析

    Hashtable、HashMap、TreeMap 都是最常见的一些 Map 实现,是以键值对的形式存储和操作数据的容器类型。 元素特性 HashTable中的key、value都不能为null;HashMap中的key、value可以为null,很显然只 能有一个key为null的键值对,但是允许有多个值为null的键值对;TreeMap TreeMap是利用红黑树来实现的(树中的每个节点的值,都会大于或等于它的左子树种的所有节点的值,并且小于或等于它的右子树中的所有节点的值),实现了SortMap接口,能够对保存的记录根据键进行排序。 所以一般需要排序的情况下是选择TreeMap来进行,默认为升序排序方式(深度优先搜索),可自定义实现Comparator接口实现排序方式。

    56100发布于 2019-04-18
  • 来自专栏学习内容

    TreeMap的使用

    1、简介 TreeMap是红黑二叉树的典型实现。我们打开TreeMap的源码,发现里面有一行核心代码: root用来存储整个树的根节点。 二、使用 1、简单使用 TreeMap会对存入的key进行排序; TreeMap<Integer, String> treeMap = new TreeMap<>(); treeMap.put(20," aa"); treeMap.put(30,"bb"); treeMap.put(10,"cc"); for (Integer key : treeMap.keySet()) { System.out.println (key+"==="+treeMap1.get(key)); } 结果为: 2、key为对象 TreeMap对key的对象,按照给定的compareTo方法进行排序存到TreeMap中。 , String> treeMap = new TreeMap<>(); treeMap.put(new Emp(100, "张三", 1000), "张三是个好员工");

    53910编辑于 2023-08-09
  • 来自专栏coolblog.xyz技术专栏

    TreeMap 源码分析

    另一方面,由于 TreeMap 基于红黑树实现,这为 TreeMap 保持键的有序性打下了基础。总的来说,TreeMap 的核心是红黑树,其很多方法也是对红黑树增删查基础操作的一个包装。 所以只要弄懂了红黑树,TreeMap 就没什么秘密了。 二、概览 TreeMap继承自AbstractMap,并实现了 NavigableMap接口。 以上就是 TreeMap 的继承体系,描述起来有点乱,不如看图了: [15154229697021.jpg] 上图就是 TreeMap 的继承体系图,比较直观。 3.1 查找 TreeMap基于红黑树实现,而红黑树是一种自平衡二叉查找树,所以 TreeMap 的查找操作流程和二叉查找树一致。 return ((TreeMap<E,?

    1.6K90发布于 2018-04-29
  • 来自专栏玖叁叁

    java集合框架-TreeMap

    TreeMap 的用法创建 TreeMap 对象在 Java 中,我们可以使用以下两种方式来创建 TreeMap 对象:TreeMap<K, V> treeMap = new TreeMap<>(); // 创建一个空的 TreeMap 对象TreeMap<K, V> treeMap = new TreeMap<>(Comparator<? 存储键值对在 TreeMap 中,我们可以使用 put() 方法来存储键值对,例如:treeMap.put(key, value);这个方法将把键值对 key:value 存储到 TreeMap 中。 获取键值对在 TreeMap 中,我们可以使用 get() 方法来获取指定键对应的值,例如:V value = treeMap.get(key);这个方法将返回键 key 对应的值,如果 TreeMap 遍历 TreeMapTreeMap 中,我们可以使用 entrySet() 方法来获取 TreeMap 中的所有键值对,然后使用 for-each 循环来遍历这些键值对,例如:for (Map.Entry

    41531编辑于 2023-05-07
  • 来自专栏java一日一条

    Java TreeMap 源码解析

    这篇文章开始介绍Map系列另一个比较重要的类TreeMap。 大家也许能感觉到,网络上介绍HashMap的文章比较多,但是介绍TreeMap反而不那么多,这里面是有原因:一方面HashMap的使用场景比较多;二是相对于HashMap来说,TreeMap所用到的数据结构更为复杂 可以看到,相比HashMap来说,TreeMap多继承了一个接口NavigableMap,也就是这个接口,决定了TreeMap与HashMap的不同: HashMap的key是无序的,TreeMap的key 由于红黑树的操作我这里不说了,所以这里基本上也就没什么源码可以讲了,因为这里面重要的算法都是From CLR,这里的CLR是指Cormen, Leiserson, Rivest,他们是算法导论的作者,也就是说TreeMap 总结 到目前为止,TreeMap与HashMap的的实现算是都介绍完了,可以看到它们实现的不同,决定了它们应用场景的不同: TreeMap的key是有序的,增删改查操作的时间复杂度为O(log(n)),

    58910发布于 2018-09-19
  • 来自专栏专注 Java 基础分享

    从源码解析TreeMap

    本篇将要介绍的一个集合是树集键值对(TreeMap),它能够对数据按照键值有序的存储。      在介绍TreeMap之前,我们来了解一种数据结构:排序二叉树。 在实现我们的TreeMap中,使用的是红黑树(一种优化了的二叉排序树)。 一、TreeMap的超接口      TreeMap主要继承了类AbstractMap(一个对Map接口的实现类)和 NavigableMap(主要提供了对TreeMap的一些高级操作例如:返回第一个键或者返回小于某个键的视图等 super K> comparator; public TreeMap() {comparator = null;} public TreeMap(Comparator 第二种构造函数就是从外部传入指定的比较器,指定TreeMap内部在对键进行比较的时候使用我们从外部传入的比较器。

    78380发布于 2018-01-04
  • 来自专栏Java研发军团

    Java之TreeMap详解

    TreeMap 简介 1. 是一个有序的key-value集合,它是通过红黑树实现的。 另外,TreeMap是非同步的。 构造方法 TreeMap() 使用键的自然顺序构造一个新的、空的树映射。 TreeMap(Comparator<? TreeMap<String,String> tree = new TreeMap<>(); tree.put("1","zhangsan1"); tree.put("2","zhangsan2"); TreeMap<String,String> tree = new TreeMap<>(); tree.put("1","zhangsan1"); tree.put("2","zhangsan2"); TreeMap<String,String> tree = new TreeMap<>(); tree.put("1","zhangsan1"); tree.put("2","zhangsan2");

    3.7K21发布于 2019-08-20
  • 来自专栏步履前行

    【Java】基础篇- TreeMap

    大家好久不见,我们今天来讲一下 Map 类的另一个重要实现 -- TreeMap。 所以就引入了我们今天的 TreeMap。(记住 TreeMap 是按照键来进行排序的)而 TreeMap 的实现基础就是我们之前的上一篇文章提到的 排序二叉树,没有看的童鞋请移步:。 基本用法 构造函数 TreeMap 有 4个 构造函数,分别是: public TreeMap() { comparator = null; } public TreeMap(Comparator (TreeMap.java:1294) at java.util.TreeMap.put(TreeMap.java:538) at MapTest.main(MapTest.java:9 public TreeMap(Comparator<?

    83030发布于 2019-06-19
  • 来自专栏java一日一条

    Java TreeMap 源码解析

    这篇文章开始介绍Map系列另一个比较重要的类TreeMap。 大家也许能感觉到,网络上介绍HashMap的文章比较多,但是介绍TreeMap反而不那么多,这里面是有原因:一方面HashMap的使用场景比较多;二是相对于HashMap来说,TreeMap所用到的数据结构更为复杂 可以看到,相比HashMap来说,TreeMap多继承了一个接口NavigableMap,也就是这个接口,决定了TreeMap与HashMap的不同: HashMap的key是无序的,TreeMap的key 由于红黑树的操作我这里不说了,所以这里基本上也就没什么源码可以讲了,因为这里面重要的算法都是From CLR,这里的CLR是指Cormen, Leiserson, Rivest,他们是算法导论的作者,也就是说TreeMap 总结 到目前为止,TreeMap与HashMap的的实现算是都介绍完了,可以看到它们实现的不同,决定了它们应用场景的不同: TreeMap的key是有序的,增删改查操作的时间复杂度为O(log(n)),

    57310发布于 2018-09-19
  • 来自专栏java跬步

    TreeMap put 操作分析

    先把TreeMap 的根节点root 的引用赋值给当前节点 3 TreeMap.Entry<K,V> t = root; 4 //如果当前节点为null ,即是空树, null) check 8 // 使用Kv 构造出新的Entry 对象,其中第三个参数就是parent ,根节点没有父亲节点 9 root = new TreeMap.Entry 12 return null; 13 } 14 // cmp 用来接收比较结果 15 int cmp; 16 TreeMap.Entry = null); 55 } 56 // 创建Entry 对象,并把parent 置入参数 57 TreeMap.Entry<K,V> e = new TreeMap.Entry

    84010发布于 2020-02-18
  • 来自专栏Android 进阶

    Hashtable、HashMap、TreeMap 分析

    Hashtable、HashMap、TreeMap 区别 Hashtable、HashMap、TreeMap 都是最常见的一些 Map 实现,是以键值对的形式存储和操作数据的容器类型。 TreeMap TreeMap 则是基于红黑树的一种提供顺序访问的 Map,和 HashMap 不同,它的 get、put、 remove 之类操作都是 O(log(n))的时间复杂度,具体顺序可以由指定的 x.equals(y); // true 与 null 的比较 对任何不是 null 的对象 x 调用 x.equals(null) 结果都为 false x.equals(null); // false; TreeMap

    97840发布于 2019-12-26
  • 详解 TreeMap 和 TreeSet

    认识 TreeMap 和 TreeSet TreeMap 和 TreeSet 是Java 中利用红黑树实现的 Map 和 Set。 TreeMap TreeMap 是以红黑树为底层结构、基于比较的 Map。 若调用构造方法时不指定比较器,系统默认以Key来进行比较;若传入比较器则会根据传入的比较器来进行比较。 无参构造方法 调用该无参构造方法会创建一个空的 TreeMap ,并且默认以 Key 进行比较。 传入 Map 的构造方法 调用此构造方法将会新建一个 TreeMap,并且将传入的 Map 中的元素全部放入新建的 TreeMap 当中。 所有传入的 Key 必须实现 Comparable接口。 它的底层其实是 TreeMap,结构也是二叉搜索树。 构造方法 1.

    21910编辑于 2025-12-16
领券