根据对象的string属性排序
1 vo
package com.wdc.stream.utils.entity;
public class StudentVO{
private String username;
private String grade01;
private String grade02;
private String grade03;
public StudentVO() {
}
public StudentVO(String username, String grade01, String grade02, String grade03) {
this.username = username;
this.grade01 = grade01;
this.grade02 = grade02;
this.grade03 = grade03;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getGrade01() {
return grade01;
}
public void setGrade01(String grade01) {
this.grade01 = grade01;
}
public String getGrade02() {
return grade02;
}
public void setGrade02(String grade02) {
this.grade02 = grade02;
}
public String getGrade03() {
return grade03;
}
public void setGrade03(String grade03) {
this.grade03 = grade03;
}
@Override
public String toString() {
return "StudentVO{" +
"username='" + username + '\'' +
", grade01='" + grade01 + '\'' +
", grade02='" + grade02 + '\'' +
", grade03='" + grade03 + '\'' +
'}';
}
}
2 工具类
package com.wdc.stream.utils;
import com.wdc.stream.utils.entity.StudentVO;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
public class MyMain {
public static void main(String[] args) {
StudentVO stu1 = new StudentVO("name01","67","76","89");
StudentVO stu2 = new StudentVO("name02","67","77","89");
StudentVO stu3 = new StudentVO("name03","67","76","86");
StudentVO stu4 = new StudentVO("name04","87","76","89");
StudentVO stu5 = new StudentVO("name04","87","73",null);
List<StudentVO> list = new ArrayList<>();
list.add(stu2);
list.add(stu4);
list.add(stu3);
list.add(stu1);
list.add(stu5);
list.forEach(System.out::println);
System.out.println();
List<StudentVO> collect0 = sort03(list);collect0.forEach(System.out::println);
System.out.println();
}
public static List<StudentVO> sort00(List<StudentVO> list){
return list.stream().sorted(Comparator.comparing(StudentVO::getUsername)).collect(Collectors.toList());
}
public static List<StudentVO> sort01(List<StudentVO> list){
return list.stream().sorted(
Comparator.comparing(StudentVO::getGrade01,Comparator.comparingInt(Integer::parseInt))
.reversed()
).collect(Collectors.toList());
}
public static List<StudentVO> sort02(List<StudentVO> list){
return list.stream().sorted(
Comparator.comparing(StudentVO::getGrade03,Comparator.nullsLast(Comparator.comparingInt(Integer::parseInt)))
).collect(Collectors.toList());
}
public static List<StudentVO> sort03(List<StudentVO> list){
return list.stream().sorted(
Comparator.comparing(StudentVO::getGrade01,Comparator.comparingInt(Integer::parseInt))
.thenComparing(StudentVO::getGrade02,Comparator.comparingInt(Integer::parseInt)).reversed()
).collect(Collectors.toList());
}
public static List<StudentVO> sort04(List<StudentVO> list){
return list.stream().sorted(
Comparator.comparing((StudentVO::getGrade01),Comparator.comparingInt(Integer::parseInt))
.thenComparing((StudentVO::getGrade02),Comparator.comparingInt(Integer::parseInt))
.thenComparing((StudentVO::getGrade03),Comparator.nullsLast(Comparator.comparing(Integer::parseInt)))
).collect(Collectors.toList());
}
}