根据对象的string属性排序

根据对象的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;     // 成绩1
        this.grade02 = grade02;     // 成绩2
        this.grade03 = grade03;     // 成绩3
    }

    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();

    }

    /**
     * 根据username排序,username为String ,排序规则同两个字符串比较,见String.compareTo方法
     * @param list
     * @return
     */
    public static List<StudentVO> sort00(List<StudentVO> list){
        return list.stream().sorted(Comparator.comparing(StudentVO::getUsername)).collect(Collectors.toList());
    }

    /**
     * 根据 成绩1 倒叙排序
     * @param list
     * @return
     */
    public static List<StudentVO> sort01(List<StudentVO> list){
        return list.stream().sorted(
                Comparator.comparing(StudentVO::getGrade01,Comparator.comparingInt(Integer::parseInt))
                .reversed()
        ).collect(Collectors.toList());
    }


    /**
     * 根据成绩3升序排序,null值排在末尾
     * @param list
     * @return
     */
    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());
    }

    /**
     * 根据成绩1,成绩2升序排序
     * @param list
     * @return
     */
    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());
    }
    /**
     * 依次 根据 成绩1、成绩2、成绩3 升序排序
     * 成绩3中的null值排在最后,若想把null值排在前面,可使用Comparator.nullsFirst()
     * @param list
     * @return
     */
    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());
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值