1、使用默认的TreeMap 构造函数,其中key值需要有比较规则。

2、使用默认的TreeMap 构造函数,Key中添加自定义类型,自定义类型必须继承Comparator。

3、使用比较器类来来实现排序,自定义类型不用来继承Comparator

试例代码:

public class Demo {

public static void main(String[] args) {

//1、使用默认的TreeMap 构造函数,其中key值需要有比较规则

TreeMap<Integer, String> map =new TreeMap<>();

map.put(new Integer(2), "BB");

map.put(new Integer(1), "AA");

map.put(new Integer(5), "EE");

map.put(new Integer(3), "CC");

map.put(new Integer(4), "DD");

map.put(new Integer(2), "AA");   //验证重复key是否能够插入

//使用遍历EntrySet方式

for(Entry<Integer, String> entry:map.entrySet()){

System.out.println("Key:"+entry.getKey()+ " --- value:"+entry.getValue());

}

//2、使用默认的TreeMap 构造函数,Key中添加自定义类型,自定义类型必须继承Comparator

System.out.println("-------------------2、使用默认的TreeMap 构造函数,Key中添加自定义类型,自定义类型必须继承Comparator-----------------------");

TreeMap<person,String> mapPer=new TreeMap<>();

mapPer.put(new person("张三",22), "6K");

mapPer.put(new person("老王",35), "29K");

mapPer.put(new person("小张",31), "11K");

for(Entry<person, String> entry:mapPer.entrySet()){

System.out.println("Key:"+entry.getKey()+ " --- value:"+entry.getValue());

}

//3、使用比较器类来来实现排序,自定义类型不用来继承Comparator

System.out.println("-------------------3、使用比较器类来来实现排序,自定义类型不用来继承Comparator-----------------------");

TreeMap<Book,String> mapBook =new TreeMap<>(new BookComparator());

mapBook.put(new Book("流浪地球",60),"200页");

mapBook.put(new Book("三体",100),"400页");

mapBook.put(new Book("大秦帝国",180),"900页");

for(Entry<Book, String> entry:mapBook.entrySet()){

System.out.println("Key:"+entry.getKey()+ " --- value:"+entry.getValue());

}

}   }

//自定义person类

class person implements Comparable<person> {

String name;  int age;

public person(String name,int age) {

this.name=name;

this.age=age;  }

@Override

public String toString() {

return "姓名:"+this.name +" 年龄:" +this.age;

}

@Override

public int compareTo(person o) {

if(o.age>this.age) {

return 1;

} else if(o.age<this.age) {

return -1;

}

return 0;

}  }

//自定义book类

class Book {

String name;

double price;

public Book(String name,double price) {

this.name=name;

this.price=price;  }

@Override

public String toString() {

return "书名:"+this.name+" 价格:"+this.price;

}  }

//book比较器类

class BookComparator implements Comparator<Book>{

@Override

public int compare(Book o1, Book o2) {

if(o1.price>o2.price) {

return 1;

} else if(o1.price<o2.price) {

return -1;

}

return 0;

}  }

Java TreeMap使用方法的更多相关文章

  1. Java - TreeMap源码解析 + 红黑树

    Java提高篇(二七)-----TreeMap TreeMap的实现是红黑树算法的实现,所以要了解TreeMap就必须对红黑树有一定的了解,其实这篇博文的名字叫做:根据红黑树的算法来分析TreeMap ...

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

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

  3. Java TreeMap 和 LinkedHashMap【笔记】

    Java TreeMap 和 LinkedHashMap[笔记] TreeMap TreeMap基本结构 TreeMap 底层的数据结构就是红黑树,和 HashMap 的红黑树结构一样 与HashMa ...

  4. oracle调用JAVA类的方法

    导入jar包 在oracle中导入需要的jar包,我们把编辑好的java类打成jar包,直接在oarcle里面写简单的调用就可以了,  1.操作系统需要拥有支持loadjava命令的jdk.  2.加 ...

  5. Java中的方法应用

    一.如何定义java中的方法 所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块. 语法: 1. 访问修饰符:方法允许被访问的权限范围, 可以是 public.protected.priv ...

  6. Java Runtime.availableProcessors()方法

    Java Runtime.availableProcessors()方法用法实例教程.   描述 java.lang.Runtime.availableProcessors() 方法返回到Java虚拟 ...

  7. paip.java OutOfMemoryError 解决方法o33

    paip.java OutOfMemoryError 解决方法o33 java.lang.OutOfMemoryError: Requested # java.lang.OutOfMemoryErro ...

  8. Java读写文件方法总结

    Java读写文件方法总结 Java的读写文件方法在工作中相信有很多的用处的,本人在之前包括现在都在使用Java的读写文件方法来处理数据方面的输入输出,确实很方便.奈何我的记性实在是叫人着急,很多时候既 ...

  9. java调用本地方法的时候报错 could not find the main class:xx.program will exit

    如图所示,当在java调用本地方法的时候报错 我的解决办法是把dll文件放到System.out.println(System.getProperty("java.library.path& ...

随机推荐

  1. 微信小程序点击图片放大

    WXML: <view class='imgList'> <view class='imgList-li' wx:for='{{imgArr}}'> <image cla ...

  2. Spring Boot2 系列教程 (八) | 配置日志

    前言 如题,今天介绍 springboot 默认日志的配置. 默认日志 Logback 默认情况下,Spring Boot 用 Logback 来记录日志,并用 INFO 级别输出到控制台.如果你在平 ...

  3. 动态内存分配(C++)

    C++中的动态内存分配 C++中通过new关键字进行动态内存分配 C++中的动态内存申请是基于类型进行的 delet关键字用于内存释放 //变量申请 Type*pointer = new Type; ...

  4. java 中文乱码问题

    1.要记住的事实 java的class文件是utf-8编码的,jvm使用utf-16,而java的字符串使用unicode编码 2.java支持的字符集 java支持的字符集可以通过java.nio. ...

  5. Java架构师线上问题排查,这些命令程序员一定用得到!

    Java架构师线上问题排查,这些命令程序员一定用得到! 线上问题排查,以下场景,你遇到过吗? 一.了解机器连接数情况 问题:1.2.3.4的sshd的监听端口是22,如何统计1.2.3.4的sshd服 ...

  6. IDEA需要修改的配置

    自动编译开关 忽略大小写开关 智能导包开关 如下图所示,将 自动导入不明确的结构 智能优化包 这两个选项勾上.那么有什么效果呢? 你在代码中,只要敲list,就会出现提示,自动导入java.util. ...

  7. 机器学习环境配置系列三之Anaconda

    1.下载Anaconda文件 进入anaconda的官网 选择对应的系统 选择希望下载的版本(本人下载的是Anaconda 5.3 For Linux Installer Python 3.7 ver ...

  8. Bootstrap自带的那些常用插件

    1.Bootstrap自带的那些常用插件. 1.1模态框 模态框的HTML代码放置的位置 务必将模态框的HTML代码放在文档的最高层级内(也就是说,尽量作为 body 标签的直接子元素),以避免其他组 ...

  9. php--->底层的运行机制与数据结构原理

    PHP 底层的运行机制与数据结构原理 1. PHP的设计理念及特点 多进程模型:由于PHP是多进程模型,不同请求间互不干涉,这样保证了一个请求挂掉不会对全盘服务造成影响,当然,随着时代发展,PHP也早 ...

  10. 【转载】计算机程序的思维逻辑 (82) - 理解ThreadLocal

    本节,我们来探讨一个特殊的概念,线程本地变量,在Java中的实现是类ThreadLocal,它是什么?有什么用?实现原理是什么?让我们接下来逐步探讨. 基本概念和用法 线程本地变量是说,每个线程都有同 ...