1、简介

TreeMap是红黑二叉树的典型实现。我们打开TreeMap的源码,发现里面有一行核心代码:
root用来存储整个树的根节点。我们继续跟踪Entry(是TreeMap的内部类)的代码:

可以看到里面存储了本身数据、左节点、右节点、父节点、以及节点颜色。

二、使用

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中。取出来就是有序的;

public class TestTreeMap {public static void main(String[] args) {TreeMap<Emp, String> treeMap = new TreeMap<>();treeMap.put(new Emp(100, "张三", 1000), "张三是个好员工");treeMap.put(new Emp(200, "李四", 2000), "李四是个好员工");treeMap.put(new Emp(300, "王五", 3000), "王五是个好员工");treeMap.put(new Emp(400, "赵六", 2000), "赵六是个好员工");for (Emp key : treeMap.keySet()) {System.out.println(key + "====" + treeMap.get(key));}}
}

Emp对象:

class Emp implements Comparable<Emp> {int id;String name;double salary;public Emp(int id, String name, double salary) {this.id = id;this.name = name;this.salary = salary;}@Overridepublic int compareTo(Emp o) {//大于1;等于1;小于-1;if (this.salary > o.salary) {return 1;} else if (this.salary < o.salary) {return -1;} else {if (this.id > o.id) {return 1;} else if (this.id < o.id) {return -1;} else if (this.id == o.id) {return 0;}}return 0;}@Overridepublic String toString() {return "Emp{" +"id=" + id +", name='" + name + '\'' +", salary=" + salary +'}';}
}

结果为:

TreeMap的使用相关推荐

  1. java treemap用法_Java TreeMap put()用法及代码示例

    TreeMap的java.util.TreeMap.put()方法用于将映射插入Map.这意味着我们可以将特定的键及其映射到的值插入到特定的映射中.如果传递了现有键,则以前的值将被新值替换.如果传递了 ...

  2. java Collection-Map 之 TreeMap

    为什么80%的码农都做不了架构师?>>>    TreeMap 内部定义了一个类  static final class Entry<K,V> implements Ma ...

  3. 【转】HashMap、TreeMap、Hashtable、HashSet和ConcurrentHashMap区别

    转自:http://blog.csdn.net/paincupid/article/details/47746341 一.HashMap和TreeMap区别 1.HashMap是基于散列表实现的,时间 ...

  4. 面试:如何决定使用 HashMap 还是 TreeMap?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 问:如何决定使用 HashMap 还是 TreeMap? 介绍 T ...

  5. 聊聊 HashMap 和 TreeMap 的内部结构

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 一.HashMap 1.基于哈希表的 Map 接口的实现. 此实现 ...

  6. 计算机程序的思维逻辑 (43) - 剖析TreeMap

    本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>(马俊昌著),由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买:京东自营链接 ...

  7. java treemap get_java treeMap 排序后 get不到value

    代码如下importjava.util.*;publicclassmain{publicstaticvoidmain(String[]args){HashMapmap=newHashMap();Val ...

  8. java TreeMap 源代码分析 平衡二叉树

    TreeMap 的实现就是红黑树数据结构,也就说是一棵自平衡的排序二叉树,这样就可以保证当需要快速检索指定节点. TreeSet 和 TreeMap 的关系 为了让大家了解 TreeMap 和 Tre ...

  9. Java集合知识:TreeMap

    TreeMap是按照Key的排序结果来组织内部结构的Map类集合,它改变了Map类散乱无序的形象.虽然TreeMap没有ConcurrentHashMap和HashMap普及(毕竟插入和删除的效率远没 ...

  10. 双列集合,往treeMap里添加元素的时候注意的事项

    双列集合:数据是成对存在的,存在映射关系. TreeSet要注意的事项: 1.往treeMap里添加元素的时候,如果元素本身具备了自然顺序的特性,那么就按照元素自然顺序特性进行排序储存. 2.往tre ...

最新文章

  1. oracle@命令_Oracle 常用运维命令整理
  2. 天命剑之天命的含义--天行有悖,乃命羲和。
  3. Redhat 或 CentOS 发行版本号
  4. 02- 流行歌曲 最新热门
  5. SAP Fiori里Contact Support的按钮渲染逻辑
  6. 典型关联分析CCA(canonical correlation analysis)
  7. Rocket - tilelink - Atomics
  8. pythonjieba分词_$好玩的分词——python jieba分词模块的基本用法
  9. requests爬取免费代理2
  10. Maven修改默认JDK
  11. vue-cli结构介绍
  12. 封装jxl导出不同数据类型的excel
  13. 数据恢复软件的原理是什么?
  14. python清理浏览器缓存_以编程方式清除边缘浏览器缓存
  15. rational rose mysql_用Rational Rose来建立数据库表
  16. Pr2019 安装教程
  17. 计算9+99+999+……+999999999
  18. 2015届互联网名企校招网址一览表
  19. numpy数组和图片互转
  20. Win7/Win8安装我们无法创建新的分区,也找不到现有的分区的解决方法

热门文章

  1. 小红书信息流推荐多样性解决方案
  2. 几行代码把Chrome搞崩溃之:HTML5 MP3录音由ScriptProcessorNode升级成AudioWorkletNode采坑记
  3. 离开IBM多年,我依然怀念它
  4. sklearn 文档翻译之 sklearn.cluster.KMeans
  5. 计算机进制中负数对应的二进制,十进制负数转换为二进制、八进制、十六进制的知识分享...
  6. 便携软件制作_如何仅用$ 8制作自制便携式空调
  7. 金山谷银山谷_山谷为开发者而死。 是时候搬到瑞士了?
  8. 中科院计算机研究生就业x薪资,本科生VS硕士薪酬究竟差多少?
  9. codeforces 101986 C Medical Checkup
  10. 【转载】关于软件测试的几点思考