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. 自定义一个安全的rm指令
  2. 免费音乐接口,当时写音乐播放器没资源,今天特意用nodejs写了一个,并布署到了cloudfo......
  3. Angular中使用axios实现get请求数据
  4. Pytorch详解NLLLoss和CrossEntropyLoss、以及softmax和log_softmax
  5. 用Python生成随机的中文验证码图片
  6. php 判断3个数谁最小,Python编程学习之如何判断3个数的大小
  7. 【C#】隐式类型var
  8. 莫比乌斯带catia建模_用sw2018制作莫比乌斯环图文教程
  9. springboot testcontext @sql_举世闻名的 SQL 注入是什么?这个漫画告诉你!
  10. Bailian2856 计算邮资【入门】
  11. servlet过滤器 实例_Java Servlet过滤器示例教程
  12. java core 之 IO流
  13. 数据--第41棵 - 图的存储结构
  14. makefile编写规则
  15. buuctf|ciscn_2019_en_2 1
  16. Vue响应式声明渲染机制
  17. 解决:索引超出范围。必须为非负值并小于集合大小。
  18. 分区表的概念、优点以及类型
  19. 从零开始搭建环境安装FCOS(Ubuntu18.04)
  20. laravel tcg/voyager 安装问题记录

热门文章

  1. [突发奇想的JS小案例] 1 捉苍蝇
  2. 神秘的高内聚与低耦合举例
  3. Linux TI omap芯片 pinmux分析(以AM335X为例)
  4. 微信员工会“偷看”用户聊天记录?张小龙万字回应来了!
  5. a标签跳转超链接为空白页,正常访问可以显示
  6. Donald Knuth 简介
  7. sql server decimal
  8. 微信文件会上传腾讯服务器吗,猝不及防!微信又上线新功能 支持发送大文件了...
  9. 转行软件测试实用操作总结
  10. Laravel 实现创建订单30分钟未支付自动关闭的功能