java多条件排序

Comparator<JrProjectBalanceDto> comparing = Comparator.comparing(JrProjectBalanceDto::getUsed).thenComparing(
        (o1, o2) -> {
            if (JrValidate.checkStringIsNumeric(o1.getCardCode()) && JrValidate.checkStringIsNumeric(o2.getCardCode())) {
                return Integer.valueOf(o1.getCardCode()) - Integer.valueOf(o2.getCardCode());
            } else {
                return o1.getCardCode().compareTo(o2.getCardCode());
            }
        });

list = list.stream().sorted(comparing).collect(Collectors.toList());
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中可以使用Comparator接口来实现主次条件排序。Comparator接口定义了一个比较器方法compare,通过比较方法返回值的正负来实现排序。下面是一个示例代码: ```java import java.util.*; class Student { private String name; private int age; private double score; public Student(String name, int age, double score) { this.name = name; this.age = age; this.score = score; } public String getName() { return name; } public int getAge() { return age; } public double getScore() { return score; } @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + ", score=" + score + '}'; } } public class Main { public static void main(String[] args) { List<Student> students = new ArrayList<>(); students.add(new Student("Tom", 18, 90)); students.add(new Student("Jerry", 19, 88)); students.add(new Student("Alice", 20, 92)); // 按照分数从高到低排序,分数相同按照年龄从小到大排序 Collections.sort(students, new Comparator<Student>() { @Override public int compare(Student o1, Student o2) { if (o1.getScore() != o2.getScore()) { return (int) (o2.getScore() - o1.getScore()); } return o1.getAge() - o2.getAge(); } }); for (Student student : students) { System.out.println(student); } } } ``` 运行结果: ``` Student{name='Alice', age=20, score=92.0} Student{name='Tom', age=18, score=90.0} Student{name='Jerry', age=19, score=88.0} ``` 在上面的示例中,我们定义了一个Student类,并实现了按照分数从高到低排序,分数相同按照年龄从小到大排序的规则。我们使用了Comparator接口,并通过匿名内部类的方式来实现compare方法。最后,使用Collections.sort方法对List进行排序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值