Java的stream流多个字段排序的实现

 更新时间:2023年10月18日 11:26:58   作者:码奴生来只知道前进~  
本文主要介绍了Java的stream流多个字段排序的实现,主要是两种方法,第一种是固定多个字段排序和第二种动态字段进行排序,具有一定的参考价值,感兴趣的可以了解一下

1、第一种是固定多个字段排序 

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

class Person {
    String name;
    int age;
    double salary;

    public Person(String name, int age, double salary) {
        this.name = name;
        this.age = age;
        this.salary = salary;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", salary=" + salary +
                '}';
    }
}

public class Main {
    public static void main(String[] args) {
        List<Person> people = Arrays.asList(
                new Person("张三", 30, 5000),
                new Person("李四", 25, 6000),
                new Person("王五", 35, 4000)
        );

        List<Person> sortedPeople = people.stream()
                .sorted(Comparator.comparing(Person::getName).thenComparing(Person::getAge).thenComparing(Person::getSalary))
                .collect(Collectors.toList());

        sortedPeople.forEach(System.out::println);
    }
}

2、第二种动态字段进行排序 

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

class Person {
    String name;
    int age;
    double salary;

    public Person(String name, int age, double salary) {
        this.name = name;
        this.age = age;
        this.salary = salary;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", salary=" + salary +
                '}';
    }
}

public class Main {
    public static void main(String[] args) {
        List<Person> people = Arrays.asList(
                new Person("张三", 30, 5000),
                new Person("李四", 25, 6000),
                new Person("王五", 35, 4000)
        );

        // 动态传入排序字段
        String sortField = "age"; // 可以修改为"name"或"salary"

        List<Person> sortedPeople = people.stream()
                .sorted(getComparator(sortField))
                .collect(Collectors.toList());

        System.out.println(sortedPeople);
    }

    private static Comparator<Person> getComparator(String sortField) {
        switch (sortField) {
            case "name":
                return Comparator.comparing(Person::getName);
            case "age":
                return Comparator.comparingInt(Person::getAge);
            case "salary":
                return Comparator.comparingDouble(Person::getSalary);
            default:
                throw new IllegalArgumentException("Invalid sort field: " + sortField);
        }
    }
}

 到此这篇关于Java的stream流多个字段排序的实现的文章就介绍到这了,更多相关Java stream多字段排序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot实现发送邮件功能

    SpringBoot实现发送邮件功能

    这篇文章主要介绍了SpringBoot 发送邮件功能实现,本文以163邮箱为例通过这个小案例给大家介绍,需要的朋友可以参考下
    2019-12-12
  • Rabbitmq消息推送功能实现示例

    Rabbitmq消息推送功能实现示例

    rabbitMQ为异步消息处理提出了一个很好的解决方案,它是一个非常好用的消息中间件。主要解决当生产者大量产生数据时,消费者无法快速消费的问题。这个时候需要一个中间层,保存这个数据,rabbitMQ是一个很好的解决方案
    2022-12-12
  • 在springboot项目中同时接收文件和多个参数的方法总结

    在springboot项目中同时接收文件和多个参数的方法总结

    在开发接口中,遇到了需要同时接收文件和多个参数的情况,可以有多种方式实现文件和参数的同时接收,文中给大家介绍了两种实现方法,感兴趣的同学跟着小编一起来看看吧
    2023-08-08
  • Java用for循环Map详细解析

    Java用for循环Map详细解析

    本篇文章主要介绍了Java用for循环Map,需要的朋友可以过来参考下,希望对大家有所帮助
    2013-12-12
  • Spring Boot实现自动发送邮件

    Spring Boot实现自动发送邮件

    这篇文章主要为大家详细介绍了Spring Boot实现自动发送邮件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • SpringCloud Gateway动态转发后端服务实现过程讲解

    SpringCloud Gateway动态转发后端服务实现过程讲解

    这篇文章主要介绍了SpringCloud Gateway动态转发后端服务实现过程,简单的路由转发可以通过SpringCloudGateway的配置文件实现,在一些业务场景种,会需要动态替换路由配置中的后端服务地址,单纯靠配置文件无法满足这种需求
    2023-03-03
  • OPENCV+JAVA实现人脸识别

    OPENCV+JAVA实现人脸识别

    这篇文章主要为大家详细介绍了OPENCV+JAVA实现人脸识别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • Java同步容器和并发容器详解

    Java同步容器和并发容器详解

    这篇文章主要介绍了Java同步容器和并发容器详解,容器是Java基础类库中使用频率最高的一部分,Java集合包中提供了大量的容器类来帮组我们简化开发,下面小编和大家来一起学习下吧
    2019-06-06
  • Java多线程实现简易微信发红包的方法实例

    Java多线程实现简易微信发红包的方法实例

    这篇文章主要给大家介绍了关于Java多线程实现简易微信发红包的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • java实现双层圣诞树加修饰代码示例

    java实现双层圣诞树加修饰代码示例

    大家好,本篇文章主要讲的是java实现双层圣诞树加修饰代码示例,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12

最新评论