java Collection-Map 之 TreeMap

TreeMap 内部定义了一个类  static final class Entry<K,V> implements Map.Entry<K,V>,(自平衡红黑二叉树)作为数据存储节点。

put方法先判断根节点是否为空,为空则在跟节点放置数据。

不为空,(调用比较器)将put的key循环比较parent节点的key,并动态修改parent的指向。最终存入数据。

然后fixAfterInsertion 自平衡调整,过程务必会涉及到红黑树的左旋、右旋、着色三个基本操作

红黑树的5点规定

1、每个节点都只能是红色或者黑色

2、根节点是黑色

3、每个叶节点(NIL节点,空节点)是黑色的。

4、如果一个结点是红的,则它两个子节点都是黑的。也就是说在一条路径上不能出现相邻的两个红色结点。

5、从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。

时间: 2024-08-12 12:55:34

java Collection-Map 之 TreeMap的相关文章

Collection Map Java数据结构

Collection Map 框架图 Collection          接口的接口   对象的集合 ├ List                   子接口      按进入先后有序保存   可重复 │├ LinkedList                接口实现类   链表   插入删除   没有同步   线程不安全 │├ ArrayList                  接口实现类   数组   随机访问   没有同步   线程不安全 │└ Vector             

Java容器类接口:Iterator,Collection,Map

Iterator Iterator被称为迭代器,是一个对象,它的工作是遍历并选择序列中的对象,可以实现以下一些操作: 使用方法iterator()要求容器返回一个Iterator,Iterator将返回序列的第一个元素: 使用next()获取序列中的下一个元素: 使用hasNext()检查序列中是否有元素: 使用remove()将迭代器最近返回的元素删除: Iterator只能向前移动,ListIterator是一个更加强大的Iterator的子类,它只能用于各种List类的访问,ListIte

【Java】Map杂谈,hashcode()、equals()、HashMap、TreeMap、LinkedHashMap、ConcurrentHashMap

参考的优秀文章: <Java编程思想>第四版 <Effective Java>第二版 Map接口是映射表的结构,维护键对象与值对象的对应关系,称键值对. > hashcode()和equals() hashcode()和equals()即用于识别对象的身份. 在HashMap或类似的实现中,查找一个对象,是通过hashcode()返回的散列值映射到一个范围内的下标,在通过equals()比较此下标连接的链表是否存在相同的对象. 简单来说,hashcode()用于参考.快速定位

Java Collection API

在 Java2中,有一套设计优良的接口和类组成了Java集合框架Collection,使程序员操作成批的数据或对象元素极为方便.这些接口和类有很多对抽象数据类型操作的API,而这是我们常用的且在数据结构中熟知的.例如Map,Set,List等.并且Java用面向对象的设计对这些数据结构和算法进行了封装,这就极大的减化了程序员编程时的负担.程序员也可以以这个集合框架为基础,定义更高级别的数据抽象,比如栈.队列和线程安全的集合等,从而满足自己的需要. Java2的集合框架,抽其核心,主要有三种:Li

Java Collection 简介

转自:http://skyuck.iteye.com/blog/526358 在 Java2中,有一套设计优良的接口和类组成了Java集合框架Collection,使程序员操作成批的数据或对象元素极为方便.这些接口和类有很多对抽象数据类型操作的API,而这是我们常用的且在数据结构中熟知的.例如Map,Set,List等.并且Java用面向对象的设计对这些数据结构和算法进行了封装,这就极大的减化了程序员编程时的负担.程序员也可以以这个集合框架为基础,定义更高级别的数据抽象,比如栈.队列和线程安全的

JavaSE:集合总结(Collection,Map)

今天来总结JavaSE部分的集合.首先来从整体来看: 我们主要要学习的内容: Collection: Collection(接口): java.util.Collection |-- List(子接口) : |--ArrayList |--LinkedList |--Vector |-- Set(子接口) : |--AbstracSet(子接口) |--HashSet |--LinkedHashSet |--SortedSet(子接口) |--TreeSet |-- Queue(子接口) : M

java集合框架11——TreeMap和源码分析(二)

我们继续分析TreeMap的源码 1.TreeMap源码分析(续) 1. 存取方法 TreeMap中的存取方法本质上就是对红黑树的插入和删除操作,从源码里体现的更为明显,其实就是对红黑树的插入和删除(可以参考:红黑树),下面简单看下源码: /*************************** put和remove **********************************/ //将key-value对添加到TreeMap中,理解TreeMap的前提是理解红黑树 //因为和红黑树中的

Java - Collection

http://blog.csdn.net/itlwc/article/details/10148321 Java - Collection 2013-08-21 15:13 4389人阅读 评论(3) 收藏 举报  分类: JavaSE(30)  版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] Collection层次结构 Collection [plain] view plain copy 子接口 Set,List 集合中只能放置对象的引用,不能放置原生数据类型, 我们

Java 遍历Map时 删除元素

1 package net.nie.test; 2 3 import java.util.HashMap; 4 import java.util.Iterator; 5 import java.util.Map; 6 7 public class HashMapTest { 8 private static Map<Integer, String> map=new HashMap<Integer,String>(); 9 10 /** 1.HashMap 类映射不保证顺序:某些映射

Java中map接口 遍历map

java集合框架用于存储数据,也被称为集合类 位于java.util包下 java.util包下常用接口和类 Collection和Map是Java集合框架的根接口 List集合是有序集合,集合中的元素可以重复,访问集合中的元素可以根据元素的索引来访问. Set集合是无序集合,集合中的元素不可以重复,访问集合中的元素只能根据元素本身来访问(也是不能集合里元素不允许重复的原因). Map集合中保存Key-value对形式的元素,访问时只能根据每项元素的key来访问其value. Map接口 Map