黑马程序员技术交流社区

标题: TreeSet集合的第二种排序方式 [打印本页]

作者: 沉湎码海    时间: 2017-2-13 07:27
标题: TreeSet集合的第二种排序方式
TreeSet集合的第二种排序方式


TreeSet的第二种排序方式:

当元素自身不具备比较性时,或者具备的比较性不是所需要的。
这时就需要让集合自身具备比较性。

定义了比较器,将比较器对象作为参数传递给TreeSet集合的构造函数。

当两种排序都存在时,以比较器为主。

定义一个类,实现Comparator接口,覆盖compare方法。





即: 相当于  在集合中放了一个刻度尺。让元素和刻度尺进行比较。


1.具备比较器的TreeSet集合
       
        在创建TreeSet集合的时候,为该集合指定一个比较器。
       
       
        TreeSet  ts = new   TreeSet(new MyCompare());//在创建TreeSet集合的时候,向集合中传入一个比较器。
       
        class  MyCompare implements  Comparator {
               
                public int Compare(Object o1,Object o2){
                       
                        Student s1=  (Student)o1;
                        Student s1=  (Student)o2;
                       
                        int  num= s1.getName().compareTo(s2.getName());
                       
                        //当主要条件相同时,比较次要条件
                       
                  if(num==0){
                          
                          if(s1.geAge()>s2.geAge)
                                  return 1;
                          if(s1.geAge()==s2.geAge)
                                  return 0;
                          return -1;
                  }
                }
        }
       

2.

/*
        关于Comparator接口的相关:
       
       
java.lang
接口 Comparable<T>


Comparable接口就只要一个方法那就是:int compareTo(T o)
                                                                                比较此对象与指定对象的顺序。

       

*/
       
       
        注意: Java中的大多数类都实现了 Comparator接口。
       
       
       
3.
        在日常开发中,我们经常用比较器进行排序。
       
       
4.
       
       


作者: IceLoveInFire丶    时间: 2017-2-13 07:46
厉害了

作者: xiaoyizi    时间: 2017-2-13 07:55
嗯嗯,可以可以。

作者: 我怕你会哭的    时间: 2017-2-13 12:19
表示看不懂。。求解释。。

作者: 沉湎码海    时间: 2017-2-13 12:21
我怕你会哭的 发表于 2017-2-13 12:19
表示看不懂。。求解释。。

带菜鸟小白飞





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2