美文网首页
TreeMap源码分析

TreeMap源码分析

作者: 剽虫 | 来源:发表于2019-05-27 16:52 被阅读0次

一.TreeMap的特性

TreeMap是有序的,可以自定义排序规则,如果不指定则按照默认的规则排序

二.TreeMap的底层结构

采用了红黑树作为底层的数据结构

三.源码分析

public V put(K key, V value) {

//头结点

Entry t =root;

//头结点为空的情况下

    if (t ==null) {

       compare(key, key); // type (and possibly null) check

        root =new Entry<>(key, value, null);

        size =1;

        modCount++;

        return null;

    }

    int cmp;

    Entry parent;

    // split comparator and comparable paths

    Comparator cpr =comparator;

   //循环比较,插入节点

    if (cpr !=null) {

   do {

           parent = t;

            cmp = cpr.compare(key, t.key);

            if (cmp <0)

                 t = t.left;

            else if (cmp >0)

                t = t.right;

          else

                return t.setValue(value);

        }while (t !=null);

    }

else {

if (key ==null)

throw new NullPointerException();

        @SuppressWarnings("unchecked")

Comparable k = (Comparable) key;

        do {

            parent = t;

            cmp = k.compareTo(t.key);

            if (cmp <0)

                  t = t.left;

            else if (cmp >0)

                 t = t.right;

            else

                return t.setValue(value);

        }while (t !=null);

    }

     Entry e =new Entry<>(key, value, parent);

    if (cmp <0)

        parent.left = e;

else

        parent.right = e;

     //插入节点后,调整红黑树

      fixAfterInsertion(e);

    size++;

    modCount++;

    return null;

}

相关文章

  • 深入ArrayList源码分析(JDK1.8)

    深入ArrayList源码分析(JDK1.8) Java 集合系列源码分析文章: 深入TreeMap源码解析(JD...

  • TreeMap 源码分析

    前言 TreeMap作为可以对key或value进行大小排序的map,我们在开发中也会经常的用到,譬如说加密一串字...

  • TreeMap源码分析

    TreeMap 平衡二叉树 平衡二叉树(Self-balancing binary search tree)又被称...

  • TreeMap源码分析

    TreeMap简介 常见的数据结构有数组、链表,还有一种结构也很常见,那就是树。前面介绍的集合类有基于数组的Arr...

  • TreeMap源码分析

    ==重点: Key对象只有实现了Comparable接口,数据结构才是有序的,java 的默认数据类型都有实现,自...

  • TreeMap源码分析

    一.TreeMap的特性 TreeMap是有序的,可以自定义排序规则,如果不指定则按照默认的规则排序 二.Tree...

  • TreeMap 源码分析

    TreeMap实现了SortedMap接口,可以根据k的大小顺序,对map中的元素进行排序,可以根据key的自然顺...

  • TreeMap及Set源码解析

    1、本文主要内容 TreeMap及Set介绍 TreeMap源码解析 Set源码解析 2、TreeMap及Set介...

  • TreeMap源码学习分析

    1.常用的Map类图 在之前,我对HashMap进行了分析,我们可以知道,HashMap是底层是维护着一个哈希表 ...

  • 我赌5块钱,你能看懂红黑树!(TreeMap源码分析)

    TreeMap是通过红黑树实现的。要分析TreeMap的源码,就要对红黑树有一定的了解。而红黑树是一种特殊...

网友评论

      本文标题:TreeMap源码分析

      本文链接:https://www.haomeiwen.com/subject/qnihtctx.html