TreeSet集合的一些特性。

一、1.TreeSet原理:

* TreeSet存储对象的时候, 可以排序, 但是需要指定排序的算法。

* Integer能排序(有默认顺序), String能排序(有默认顺序), 自定义的类存储的时候出现异常(没有顺序)。

* 如果想把自定义类的对象存入TreeSet进行排序, 那么必须实现Comparable接口

*   在类上implement Comparable

*   重写compareTo()方法

*   在方法内定义比较算法, 根据大小关系, 返回正数负数或零

*   在使用TreeSet存储对象的时候, add()方法内部就会自动调用compareTo()方法进行比较, 根据比较结果使用      二叉树形式进行存储

二、对自定义的一个类进行重新定义排序方法。

step1:让这个类先实现Comparablejiekou;

step2:重写comparato方法,在方法中定义逻辑。(自己定义比较方法);

如下图:


自定义一个Student类,实现comparable接口,重写comparato方法。在本类中我给了两个成员变量,我使其规定为按照其的age大小进行排序,this.age为本类实例的age,s.age为向上转型的格式,是将其要比较的对象向上转型为一个Student类。retuen其中return的(1,0,-1)将其作为结果返回代表的是大于,等于与小于。就是两个实例进行比较之后所得到的大小关系。(else if中加的判定为当年龄相等时,就去比较name,比较name的方法为treeset中默认的比较String的方法,然后得出大小关系。最后一个return的意思为当你要比较的对象不属于Student这个类时,使这个类小于所比较的所有的类,但我在声明集合类型的时候就已经声明为只能存放Student类型的,所以,不存在走最后走一个return的情况)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,765评论 18 399
  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 1,091评论 0 4
  • 1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来...
    XLsn0w阅读 1,262评论 0 2
  • 上一篇文章介绍了Set集合的通用知识。Set集合中包含了三个比较重要的实现类:HashSet、TreeSet和En...
    Ruheng阅读 15,698评论 3 57
  • 终于感冒了。在连日各种压力下,终于受不了了。也在看《金刚经》人有妄念,所以执迷。健康才是根本,像孩子一样,如果父母...
    深情无用阅读 185评论 0 0