TreeMap类
来源:互联网 发布:机构交易内部软件 编辑:程序博客网 时间:2024/06/01 09:57
TreeMap也是基于红黑树(二叉树)数据结构实现的,特点:会对元素的键进行排序存储。
TreeMap要注意的事项:
1.往TreeMap添加元素的时候,如果元素的键具备自然顺序,那么就会按照键的自然顺序特性进行排序存储。
2.往TreeMap添加元素的时候,如果元素的键不具备自然顺序,那么键所属的类必须要实现Comparable接口,把键的比较规则定义在CompareTo方法上。
3.往TreeMap添加元素的时候,如果元素的键不具备自然顺序,而且键所属的类也没有实现Comparable接口,那么就必须在创建TreeMap对象的时候传入比较器。
package com.cn.map;
import java.util.Comparator;
import java.util.TreeMap;
/**
* Author:Liu Zhiyong
* Version:Version_1
* Date:2016年7月19日09:21:12
* Desc:TreeMap
* TreeMap也是基于红黑树(二叉树)数据结构实现的,特点:会对元素的键进行排序存储。
*
* TreeMap要注意的事项:
* 1.往TreeMap添加元素的时候,如果元素的键具备自然顺序,那么就会按照键的自然顺序特性进行排序存储。
* 2.往TreeMap添加元素的时候,如果元素的键不具备自然顺序,那么键所属的类必须要实现Comparable接口,把键的比较规则定义在CompareTo方法上。
* 3.往TreeMap添加元素的时候,如果元素的键不具备自然顺序,而且键所属的类也没有实现Comparable接口,那么就必须在创建TreeMap对象
* 的时候传入比较器。
*/
class Emp{// implements Comparable<Emp>{
String name;
int salary;
public Emp(String name, int salary) {
super();
this.name = name;
this.salary = salary;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return this.name + ":" + this.salary;
}
/*@Override
public int compareTo(Emp o) {
// TODO Auto-generated method stub
return this.salary - o.salary;
}*/
}
//自定义比较器
class MyComparator implements Comparator<Emp>{
@Override
public int compare(Emp o1, Emp o2) {
// TODO Auto-generated method stub
return o1.salary - o2.salary;
}
}
public class Demo4 {
public static void main(String[] args) {
/*TreeMap<Character, Integer> treeMap = new TreeMap<Character, Integer>();
treeMap.put('e', 1);
treeMap.put('a', 4);
treeMap.put('b', 9);
treeMap.put('c', 3);*/
TreeMap<Emp, String> treeMap = new TreeMap<Emp, String>(new MyComparator());
treeMap.put(new Emp("小龙女", 303), "001");
treeMap.put(new Emp("习近平", 112), "004");
treeMap.put(new Emp("奥巴马", 119), "005");
treeMap.put(new Emp("朴槿惠", 222), "001");
treeMap.put(new Emp("哈哈哈哈", 222), "009");
System.out.println(treeMap);
}
}
需求:定义一个TreeMap,键存储的是书对象,值存储的是字符串。根据书的出版日期进行排序。
package com.cn.map;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Comparator;
import java.util.Date;
import java.util.TreeMap;
/**
* Author:Liu Zhiyong
* Version:Version_1
* Date:2016年7月19日10:47:46
* Desc:需求:定义一个TreeMap,键存储的是书对象,值存储的是字符串。根据书的出版日期进行排序。
*/
class Book{
String name;
Date date;//出版日期
public Book(String name, Date date) {
this.name = name;
this.date = date;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "[" + this.name + ":" + this.date + "]";
}
}
class MyComparator1 implements Comparator<Book>{
@Override
public int compare(Book o1, Book o2) {
// TODO Auto-generated method stub
return o1.date.compareTo(o2.date);//利用了Date的compareTo(Date anotherDate)方法进行排序
//System.out.println((int)(o1.date.getTime() - o2.date.getTime())); //这样强转的话可能会出现精度丢失
//System.out.println(new Long(o1.date.getTime() - o2.date.getTime()).intValue());
//return (int)(o1.date.getTime() - o2.date.getTime());
//return new Long(o1.date.getTime() - o2.date.getTime()).intValue();
}
}
public class Demo5 {
public static void main(String[] args) throws InterruptedException, ParseException {
TreeMap<Book, String> treeMap = new TreeMap<Book, String>(new MyComparator1());//值存储书名
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:SS");
treeMap.put(new Book("简爱", simpleDateFormat.parse("2016-07-10 11:31:19")), "简爱");
//Thread.sleep(1000);
treeMap.put(new Book("十万个为什么", simpleDateFormat.parse("2014-7-20 11:13:18")), "十万个为什么");
//Thread.sleep(1000);
treeMap.put(new Book("The Thinking of Java", simpleDateFormat.parse("2016-6-12 11:9:22")), "The Thinking of Java");
//Thread.sleep(1000);
treeMap.put(new Book("完美的世界", simpleDateFormat.parse("2016-9-2 11:56:44")), "完美的世界");
//Thread.sleep(1000);
treeMap.put(new Book("斗破苍穹", simpleDateFormat.parse("2000-6-19 11:21:55")), "斗破苍穹");
//Thread.sleep(1000);
treeMap.put(new Book("校花的贴身高手", simpleDateFormat.parse("2015-2-9 11:15:00")), "校花的贴身高手");
//Thread.sleep(1000);
System.out.println(treeMap);
}
}
0 0
- TreeMap类
- TreeMap类
- TreeMap类使用笔记
- 【Java源码】TreeMap类
- TreeMap类的使用
- TreeMap类源码解析
- java的TreeMap类
- TreeMap
- TreeMap
- treeMap
- TreeMap
- TreeMap
- TreeMap
- TreeMap
- TreeMap
- TreeMap
- treemap
- treemap
- 机器学习之线程回归
- phpize是什么
- CSS及HTML 常见误区和注意事项(一)
- 开启多线程的姿势
- 梯度下降及其改进算法的比较
- TreeMap类
- Unity中Generic动画类型的相关设置
- javascript 数组的splice方法
- <Android开源库> Realm For Android~ Scheme & JSON & Notification(译文)
- UML(一) 类图详解
- js中height、clientHeight、scrollHeight、offsetHeight区别
- Collections(集合的工具类)
- UNIX常用命令行指令(5)(访问权限和进程操作)
- 基数排序