对象
学生对象 有学生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