List中封装对象多属性排序

对象

学生对象 有学生id 分数score 年龄age

public class Students {
    private int id;
    private int score;
    private int age;

    public Students(int id, int score, int age) {
        this.id = id;
        this.score = score;
        this.age = age;
    }

    public int getId() {
        return id;
    }

    public int getScore() {
        return score;
    }

    public int getAge() {
        return age;
    }

    @Override
    public String toString() {
        return "Students{" +
                "id=" + id +
                ", score=" + score +
                ", age=" + age +
                '}';
    }
}

首先我们创建一些实体类放进集合中

1. 分数升序 再年龄升序

public class MultiConditionSorting {
    public static void main(String[] args) {
        Students s1 = new Students(6, 100, 10);
        Students s2 = new Students(4, 100, 11);
        Students s3 = new Students(1, 100, 12);
        Students s4 = new Students(2, 90, 12);
        Students s5 = new Students(3, 90, 13);
        Students s6 = new Students(5, 80, 13);
        Students s7 = new Students(7, 80, 13);

        List<Students> list = new ArrayList<>();
        list.add(s1);
        list.add(s2);
        list.add(s3);
        list.add(s4);
        list.add(s5);
        list.add(s6);
        list.add(s7);

        Comparator<Students> score = Comparator.comparing(Students::getScore);
        Comparator<Students> age = Comparator.comparing(Students::getAge);
        list.sort(score.thenComparing(age));

        LinkedList<Integer> stuId = new LinkedList<>();
        for (Students students : list) {
            stuId.add(students.getId());
            System.out.println("students = " + students);
        }
        for (Integer integer : stuId) {
            System.out.println("integer = " + integer);
        }
    }
}
students = Students{id=5, score=80, age=13}
students = Students{id=7, score=80, age=13}
students = Students{id=2, score=90, age=12}
students = Students{id=3, score=90, age=13}
students = Students{id=6, score=100, age=10}
students = Students{id=4, score=100, age=11}
students = Students{id=1, score=100, age=12}
integer = 5
integer = 7
integer = 2
integer = 3
integer = 6
integer = 4
integer = 1

2. 分数升序 年龄降序

public class MultiConditionSorting {
    public static void main(String[] args) {
        Students s1 = new Students(6, 100, 10);
        Students s2 = new Students(4, 100, 11);
        Students s3 = new Students(1, 100, 12);
        Students s4 = new Students(2, 90, 12);
        Students s5 = new Students(3, 90, 13);
        Students s6 = new Students(5, 80, 13);
        Students s7 = new Students(7, 80, 13);

        List<Students> list = new ArrayList<>();
        list.add(s1);
        list.add(s2);
        list.add(s3);
        list.add(s4);
        list.add(s5);
        list.add(s6);
        list.add(s7);

        Comparator<Students> score = Comparator.comparing(Students::getScore);
        Comparator<Students> age = Comparator.comparing(Students::getAge).reversed();
        list.sort(score.thenComparing(age));

        LinkedList<Integer> stuId = new LinkedList<>();
        for (Students students : list) {
            stuId.add(students.getId());
            System.out.println("students = " + students);
        }
        for (Integer integer : stuId) {
            System.out.println("integer = " + integer);
        }
    }
}
students = Students{id=5, score=80, age=13}
students = Students{id=7, score=80, age=13}
students = Students{id=3, score=90, age=13}
students = Students{id=2, score=90, age=12}
students = Students{id=1, score=100, age=12}
students = Students{id=4, score=100, age=11}
students = Students{id=6, score=100, age=10}
integer = 5
integer = 7
integer = 3
integer = 2
integer = 1
integer = 4
integer = 6

2. 分数降序 年龄降序

public class MultiConditionSorting {
    public static void main(String[] args) {
        Students s1 = new Students(6, 100, 10);
        Students s2 = new Students(4, 100, 11);
        Students s3 = new Students(1, 100, 12);
        Students s4 = new Students(2, 90, 12);
        Students s5 = new Students(3, 90, 13);
        Students s6 = new Students(5, 80, 13);
        Students s7 = new Students(7, 80, 13);

        List<Students> list = new ArrayList<>();
        list.add(s1);
        list.add(s2);
        list.add(s3);
        list.add(s4);
        list.add(s5);
        list.add(s6);
        list.add(s7);

        Comparator<Students> score = Comparator.comparing(Students::getScore).reversed();
        Comparator<Students> age = Comparator.comparing(Students::getAge).reversed();
        list.sort(score.thenComparing(age));

        LinkedList<Integer> stuId = new LinkedList<>();
        for (Students students : list) {
            stuId.add(students.getId());
            System.out.println("students = " + students);
        }
        for (Integer integer : stuId) {
            System.out.println("integer = " + integer);
        }
    }
}

"E:\Java\jdk 1.8\bin\java.exe" "-javaagent:E:\idea\IntelliJ IDEA 2020.1\lib\idea_rt.jar=60649:E:\idea\IntelliJ IDEA 2020.1\bin" -Dfile.encoding=UTF-8 -classpath "E:\java\jdk 1.8\jre\lib\charsets.jar;E:\java\jdk 1.8\jre\lib\deploy.jar;E:\java\jdk 1.8\jre\lib\ext\access-bridge-64.jar;E:\java\jdk 1.8\jre\lib\ext\cldrdata.jar;E:\java\jdk 1.8\jre\lib\ext\dnsns.jar;E:\java\jdk 1.8\jre\lib\ext\jaccess.jar;E:\java\jdk 1.8\jre\lib\ext\jfxrt.jar;E:\java\jdk 1.8\jre\lib\ext\localedata.jar;E:\java\jdk 1.8\jre\lib\ext\nashorn.jar;E:\java\jdk 1.8\jre\lib\ext\sunec.jar;E:\java\jdk 1.8\jre\lib\ext\sunjce_provider.jar;E:\java\jdk 1.8\jre\lib\ext\sunmscapi.jar;E:\java\jdk 1.8\jre\lib\ext\sunpkcs11.jar;E:\java\jdk 1.8\jre\lib\ext\zipfs.jar;E:\java\jdk 1.8\jre\lib\javaws.jar;E:\java\jdk 1.8\jre\lib\jce.jar;E:\java\jdk 1.8\jre\lib\jfr.jar;E:\java\jdk 1.8\jre\lib\jfxswt.jar;E:\java\jdk 1.8\jre\lib\jsse.jar;E:\java\jdk 1.8\jre\lib\management-agent.jar;E:\java\jdk 1.8\jre\lib\plugin.jar;E:\java\jdk 1.8\jre\lib\resources.jar;E:\java\jdk 1.8\jre\lib\rt.jar;E:\ideaCodeLibrary\TestCode\target\classes" MultiConditionSorting
students = Students{id=1, score=100, age=12}
students = Students{id=4, score=100, age=11}
students = Students{id=6, score=100, age=10}
students = Students{id=3, score=90, age=13}
students = Students{id=2, score=90, age=12}
students = Students{id=5, score=80, age=13}
students = Students{id=7, score=80, age=13}
integer = 1
integer = 4
integer = 6
integer = 3
integer = 2
integer = 5
integer = 7

第二种点点点写法

import java.util.ArrayList;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;

/**
 * @Author: jsy
 * @Description:
 * @Date:Created in 19:03 2021/8/9
 */
public class MultiConditionSorting {
    public static void main(String[] args) {
        Students s1 = new Students(6, 100, 10);
        Students s2 = new Students(4, 100, 11);
        Students s3 = new Students(1, 100, 12);
        Students s4 = new Students(2, 90, 12);
        Students s5 = new Students(3, 90, 13);
        Students s6 = new Students(5, 80, 13);
        Students s7 = new Students(7, 80, 13);

        List<Students> list = new ArrayList<>();
        list.add(s1);
        list.add(s2);
        list.add(s3);
        list.add(s4);
        list.add(s5);
        list.add(s6);
        list.add(s7);

//        Comparator<Students> score = Comparator.comparing(Students::getScore).reversed();
//        Comparator<Students> age = Comparator.comparing(Students::getAge).reversed();
//        list.sort(score.thenComparing(age));

        list.sort(Comparator.comparing(Students::getScore).reversed()
        		 .thenComparing(Comparator.comparing(Students::getAge).reversed()));

        LinkedList<Integer> stuId = new LinkedList<>();
        for (Students students : list) {
            stuId.add(students.getId());
            System.out.println("students = " + students);
        }
        for (Integer integer : stuId) {
            System.out.println("integer = " + integer);
        }
    }
}

"E:\Java\jdk 1.8\bin\java.exe" "-javaagent:E:\idea\IntelliJ IDEA 2020.1\lib\idea_rt.jar=53778:E:\idea\IntelliJ IDEA 2020.1\bin" -Dfile.encoding=UTF-8 -classpath "E:\java\jdk 1.8\jre\lib\charsets.jar;E:\java\jdk 1.8\jre\lib\deploy.jar;E:\java\jdk 1.8\jre\lib\ext\access-bridge-64.jar;E:\java\jdk 1.8\jre\lib\ext\cldrdata.jar;E:\java\jdk 1.8\jre\lib\ext\dnsns.jar;E:\java\jdk 1.8\jre\lib\ext\jaccess.jar;E:\java\jdk 1.8\jre\lib\ext\jfxrt.jar;E:\java\jdk 1.8\jre\lib\ext\localedata.jar;E:\java\jdk 1.8\jre\lib\ext\nashorn.jar;E:\java\jdk 1.8\jre\lib\ext\sunec.jar;E:\java\jdk 1.8\jre\lib\ext\sunjce_provider.jar;E:\java\jdk 1.8\jre\lib\ext\sunmscapi.jar;E:\java\jdk 1.8\jre\lib\ext\sunpkcs11.jar;E:\java\jdk 1.8\jre\lib\ext\zipfs.jar;E:\java\jdk 1.8\jre\lib\javaws.jar;E:\java\jdk 1.8\jre\lib\jce.jar;E:\java\jdk 1.8\jre\lib\jfr.jar;E:\java\jdk 1.8\jre\lib\jfxswt.jar;E:\java\jdk 1.8\jre\lib\jsse.jar;E:\java\jdk 1.8\jre\lib\management-agent.jar;E:\java\jdk 1.8\jre\lib\plugin.jar;E:\java\jdk 1.8\jre\lib\resources.jar;E:\java\jdk 1.8\jre\lib\rt.jar;E:\ideaCodeLibrary\TestCode\target\classes" MultiConditionSorting
students = Students{id=1, score=100, age=12}
students = Students{id=4, score=100, age=11}
students = Students{id=6, score=100, age=10}
students = Students{id=3, score=90, age=13}
students = Students{id=2, score=90, age=12}
students = Students{id=5, score=80, age=13}
students = Students{id=7, score=80, age=13}
integer = 1
integer = 4
integer = 6
integer = 3
integer = 2
integer = 5
integer = 7

Process finished with exit code 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值