/*
TreeMap :
存储键值对数据,key是唯一的,去重的,无序的(存放的顺序与内部真实存储的顺序不保证一致)
底层结构 : 红黑树
特点 : 根据key做自动升序排序(比较器)
去重与升序排序 : 根据key比较规则做去重与排序
新增方法 : 新增了一些与比较大小相关的方法
注意 : Map集合下所有的实现类,去重|排序都是根据key实现的,与value无关
练习 :
定义TreeMap集合存储键值对数据
键为Double类型,值为String类型,测试使用
键为Employee类型,值为员工所在公司名字,测试使用
*/
public static void main(String[] args) {
//TreeMap<String,Double> map = new TreeMap<>(); 使用key的类型的默认比较器进行对键值对key做比较大小,做升序排序
//TreeMap(Comparator<? super K> comparator) 构造一个新的空树图,根据给定的比较器排序。
//TreeMap<Person,Double> map = new TreeMap<>(new Impl()); //根据参数传递的比较规则对key做比较去重与排序
//匿名内部类
/*TreeMap<Person,Double> map = new TreeMap<>(new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
return o1.getAge()-o2.getAge();
}
});*/
//lambda
TreeMap<Person,Double> map = new TreeMap<>((o1, o2)->{
return o1.getAge()-o2.getAge();
});
map.put(new Person("zhangsan",18),10000.0);
map.put(new Person("wangwu",27),8888.0);
map.put(new Person("lisi",26),9999.0);
map.put(new Person("zhangsan",28),12000.0);
System.out.println(map);
//Map.Entry<K,V> ceilingEntry(K key) 返回与大于或等于给定键的最小键关联的键 - 值映射,如果没有此键,则 null 。
//K ceilingKey(K key) 返回大于或等于给定键的 null键,如果没有这样的键,则 null 。
System.out.println(map.ceilingKey(new Person("lisi",27)));
System.out.println(map.get(map.ceilingKey(new Person("lisi",27))));
//Map.Entry<K,V> floorEntry(K key) 返回与小于或等于给定键的最大键关联的键 - 值映射,如果没有此键,则 null 。
//K floorKey(K key) 返回小于或等于给定键的最大键,如果没有这样的键,则 null 。
System.out.println("--->"