TreeSet与TreeMap笔记

TreeSet

注意:TreeSet在添加元素时进行排序,数据更改不会影响原来的顺序。使用过程中最好不要改变其元素内容,可能会导致内容重复。为避免重复可以将元素类内部属性定义为final常量,就不能修改了。

  1. 数据元素可以排序且不可重复
    因为TreeSet也是实现了Set接口的实体类,而Set接口中元素不可重复。
  2. HashSet与TreeSet对比
    HashSet中的元素必须重写hashcode和equals方法,用来去重,而TreeSet因为元素可以排序,即定义了排序规则就可以通过比较,结果为0则表示重复了。
  3. 对于两种不同的排序定义实现选择不同的构造器
  • Comparable选择new TreeSet();
  • Comparator选择new TreeSet(Comparator<? super E> comparator);

TreeSet应用示例
很简单,继续使用上面的Person类,因为在存放时就已经排序了,直接输出即可查看排序后的内容

  1. Comparator接口定义的类的排序
public class Demo1 {

    public static void main(String[] args) {
        TreeSet<Person> list=new TreeSet<>(new PersonHandsomSort());
        list.add(new Person("张学友",105));
        list.add(new Person("刘德华", 100));
        list.add(new Person("Viking",300));
        
        System.out.println(list);
    }
}
  1. 实现Compareble接口的自定义类的排序
public class Demo1 {

    public static void main(String[] args) {
        //直接调用空构造器 
        TreeSet<Person> list=new TreeSet<>();
        list.add(new Person("张学友",105));
        list.add(new Person("刘德华", 100));
        list.add(new Person("Viking",300));
        
        System.out.println(list);
    }
}

TreeMap

TreeMap与TreeSet的使用类似。
TreeMap要求键是可以排序的,上面的Person类可以直接当做值来排序,键随便放点什么就好了。

  1. Comparator接口
public class Demo1 {

    public static void main(String[] args) {
        TreeMap<Person, String> map=new TreeMap<>(new PersonHandsomSort());
        Person p1=new Person("张学友",105);
        Person p2=new Person("刘德华", 100);
        Person p3=new Person("Viking",300);
        
        map.put(p1, "123");
        map.put(p2, "123");
        map.put(p3, "123");
        //利用map的KeySet方法,得到存放键的数组,即Person的数组,再打印
        Set<Person> persons=map.keySet();
        System.out.println(persons);
    }
}
  1. Comparable接口类似,不再重复
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,251评论 18 399
  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 5,412评论 0 3
  • 一、基本数据类型 注释 单行注释:// 区域注释:/* */ 文档注释:/** */ 数值 对于byte类型而言...
    龙猫小爷阅读 9,732评论 0 16
  • List list(表)继承Collection(集合)接口,主要有Arraylist,LinkedList和Ve...
    fredal阅读 5,776评论 2 17
  • 真实的量子时空!《惊天魔盗团2》 原创2016-07-23品牌中心中和黄埔成长吧 到底什么是真实呢?如果不在什么情...
    中和黄埔阅读 3,984评论 0 0

友情链接更多精彩内容