Java TreeSetコレクションコンパレータソートComparatorの使用

6705 ワード

コンパレータソートComparatorの使用
生徒オブジェクトを格納し、巡回してTreeSetセットを作成するパラメータ付き構築方法を使用する.
要求は、学生の年齢によって小さいから大きいまで並べ替え、年齢が同じであれば、名前のアルファベット順に並べ替える.
結論
カスタムオブジェクトをTreeSetコレクションで格納し、パラメトリック構築方法は「コンパレータソート」を使用して要素をソートします.
コンパレータソートとは、集合構造方法にComparator実装クラスオブジェクトを受信させ、comparareTo(T O 1,tO 2)を書き換える方法である.3、書き換え方法の場合、必ず並べ替え規則に注意し、要求された主な条件と副次的な条件に従ってを書かなければならない.
//TreeSetDemo.java
/*     Comparator   
    1、      ,   ,  TreeSet          
    2、  ,            ,      ,            
    
    1、 TreeSet         ,          “     ”        ;
    2、     ,           Comparator     ,  compareTo(T O1,tO2)  ;
    3、     ,        ,                  
*
* */
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;

public class TreeSetDemo {
    public static void main(String[] args) {
        //  TreeSet    
        TreeSet ts = new TreeSet(new Comparator() {
            @Override
            public int compare(Student s1, Student s2) {
                int num = s1.getAge() - s2.getAge();//          
                //      ,            (           )
                int num2 = num == 0 ? s1.getName().compareTo(s2.getName()) : num;
                return num2;
            }
        });
        //      
        Student s1 = new Student("linqingxia", 35);
        Student s2 = new Student("zhangmanyu", 30);
        Student s3 = new Student("wangzuxian", 36);
        Student s4 = new Student("liudehua", 30);
        Student s5 = new Student("zhourunfa", 34);
        Student s6 = new Student("zhourunfa", 34);
        //        
        ts.add(s1);
        ts.add(s2);
        ts.add(s3);
        ts.add(s4);
        ts.add(s5);
        ts.add(s6);

        //         ,
/*        Iterator it = ts.iterator();
        while(it.hasNext()){
            Student s = it.next();
            System.out.println(s.getName()+":"+s.getAge());

        }*/
        //    for    
        for (Student s : ts) {
            System.out.println(s.getName()+":"+s.getAge());
        }
    }
}

 Student.java
public class Student {
    //      
    private String name;
    private int age;
    /*      
    * 1、    ,      ,   void   
    * 2、       ,         
    * 3、 new    ,          
    * */
    public Student() {

    }

    //      
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }
    public String getName(){
        return name;
    }
    public int getAge(){
        return age;
    }
}