JAVA自定義排序

import java.util.Arrays;

//實現Comparable接口可以進行比較大小
public class People implements Comparable<People>{

    private String name;
    private Integer age;

    public People(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "People{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public String getName() {
        return name;
    }

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

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    //實現Comparable接口 需要實現compareTo比較方法
    @Override
    public int compareTo(People o) {
        //當前對象this和o進行大小比較
        //返回值有三種情況
        //負數 this < o
        //0   this = o
        //正數 this > o
        //如果修改 比較結果 就可以實現 倒序排列 如 a>b 返回 -1

        if (this.age > o.getAge()){
            return 1;
        }else if (this.getAge() < o.getAge()){
            return -1;
        }else {
            return 0;
        }

        //同樣可以實現
//        return this.getAge() - o.getAge();
//        return o.getAge() - this.getAge();
    }


    public static void main(String[] args) {

        People p1 = new People("zhangsna",20);

        People p2 = new People("lisi",30);

        //使用比較方法
        System.out.println(p1.compareTo(p2));

        //Java中所有的排序都依賴於compareTo 進行大小比較,並且都是升序
        //不能控制排序方式,但是可以控制比較結果
        //通過控制大小比較結果來影響排序結果
        //如將compareTo方法中的 -1 和 1 顛倒 就可以倒序排列

        People[] peoples = {p2,p1};//p1,p2位置不影響排序結果

        Arrays.sort(peoples);//對數組進行排序(默認升序 )

        for (People p : peoples){
            System.out.println(p);
            System.out.println("==========");

        }
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章