Java Collections集合工具類中sort方法的使用

Collections集合工具類中sort方法可以實現對Integer、String等進行排序,排序方法有兩種:

1. 按照默認排序方式(升序)進行排序,由於是靜態方法,調用是使用【Collections.sort(list)】即可。調用該方法排序時,list集合中存儲的數據對象必須實現Comparable接口中的【compareTo】方法,Integer、String等類中均已實現。

public static <T extends Comparable<? super T>> void sort(List<T> list) {
        list.sort(null);
}

案例

public class person implements Comparable<person>{
    private String name;
    private int age;

    public person() {
    }

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

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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


    @Override
    public boolean equals(Object o) {
        System.out.println(getClass());//通過反射獲取當前類的類型,即person
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        person person = (person) o;
        return age == person.age &&
                Objects.equals(name, person.name);//使用Objects中的equals方法,可以避免空指針異常
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }

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

    @Override
    public int compareTo(person o) {
        return this.getAge()-o.getAge();//按年齡升序排序
    }
}

2. 按照指定排序方式進行排序,此時在傳入需要排序的list集合之後,還需要提供Comparator類,並實現【compare】方法。

public static <T> void sort(List<T> list, Comparator<? super T> c) {
        list.sort(c);
}

案例:

private static void show() {
        LinkedList<String> listStr = new LinkedList<>();
        listStr.add("1123");
        listStr.add("122");

        //方式1
        /*listStr.sort(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1-o2;
            }
        });*/

        //方式2
        Collections.sort(listStr, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return Integer.parseInt(o1)-Integer.parseInt(o2);
            }
        });
        System.out.println(listStr);

    }

 

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