集合list和set排序的實(shí)現(xiàn)

List、Set的相同點(diǎn)和區(qū)別

List和Set繼承了Collection接口。
List以特定索引來存取元素,可以有重復(fù)元素。Set不能存放重復(fù)元素(用對象的equals()方法來區(qū)分元素是否重復(fù))。

TreeSet的排序?qū)崿F(xiàn):

package com.example.demo.model;

/**
 * @author AxeLai
 * @date 2019-04-22 18:47
 */

public class User implements Comparable<User> {
    /**
     * 編號
     */
    private int id;
    /**
     * 姓名
     */
    private String name;
    /**
     * 年齡
     */
    private String sex;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public User(int id, String name, String sex) {
        this.id = id;
        this.name = name;
        this.sex = sex;
    }

    @Override
    public int compareTo(User user) {
        //升序排序
        return this.id - user.id;
        //降序排序
        //return this.age - o.age;
    }
}

        Set<User> userList = new TreeSet<>();
        userList.add(new User(1,"小李","男"));
        userList.add(new User(5,"小李","男"));
        userList.add(new User(7,"小李","男"));
        userList.add(new User(3,"小李","男"));
        for (User user:userList) {
            System.out.println(user.getId());
        }

ArraList的排序:

比較的對象類

package com.example.demo.model;

/**
 * @author AxeLai
 * @date 2019-04-22 18:47
 */

public class User {
    /** 編號 */
    private int id;
    /** 姓名 */
    private String name;
    /** 年齡 */
    private String sex;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public User(int id, String name, String sex) {
        this.id = id;
        this.name = name;
        this.sex = sex;
    }
}

比較的實(shí)現(xiàn)方法

    private static void sortList() {
        List<User>userList = new ArrayList<>();
        userList.add(new User(1,"小李1","男"));
        userList.add(new User(5,"小李2","男"));
        userList.add(new User(7,"小李3","女"));
        userList.add(new User(3,"小李4","男"));
        //通過sort方法的第二個(gè)參數(shù)傳入一個(gè)Comparator接口對象 相當(dāng)于是傳入一個(gè)比較對象大小的算法到sort方法中
        Collections.sort(userList,new Comparator<User>() {
            @Override
            public int compare(User user0, User user1) {
                //降序排序
                return user1.getId()-user0.getId();
            }
        });
        for (User user:userList) {
            System.out.println(user.getId());
        }
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容