最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java的stream流多個字段排序的實現(xiàn)

 更新時間:2023年10月18日 11:26:58   作者:碼奴生來只知道前進~  
本文主要介紹了Java的stream流多個字段排序的實現(xiàn),主要是兩種方法,第一種是固定多個字段排序和第二種動態(tài)字段進行排序,具有一定的參考價值,感興趣的可以了解一下

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、第二種動態(tài)字段進行排序 

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

        // 動態(tài)傳入排序字段
        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);
        }
    }
}

 到此這篇關(guān)于Java的stream流多個字段排序的實現(xiàn)的文章就介紹到這了,更多相關(guān)Java stream多字段排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Elasticsearch倒排索引詳解及實際應(yīng)用中的優(yōu)化

    Elasticsearch倒排索引詳解及實際應(yīng)用中的優(yōu)化

    Elasticsearch(ES)使用倒排索引來加速文本的搜索速度,倒排索引之所以高效,主要是因為它改變了數(shù)據(jù)的組織方式,使得查詢操作可以快速完成,這篇文章主要給大家介紹了關(guān)于Elasticsearch倒排索引詳解及實際應(yīng)用中優(yōu)化的相關(guān)資料,需要的朋友可以參考下
    2024-08-08
  • IDEA 2020.1.2 安裝教程附破解教程詳解

    IDEA 2020.1.2 安裝教程附破解教程詳解

    這篇文章主要介紹了IDEA 2020.1.2 安裝教程附帶破解教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • SpringBoot2.x實現(xiàn)給Controller的RequestMapping添加統(tǒng)一前綴

    SpringBoot2.x實現(xiàn)給Controller的RequestMapping添加統(tǒng)一前綴

    這篇文章主要介紹了SpringBoot2.x實現(xiàn)給Controller的RequestMapping添加統(tǒng)一前綴,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • spring-boot 3.X版本整合RocketMq的詳細過程

    spring-boot 3.X版本整合RocketMq的詳細過程

    本文詳細介紹了如何使用Spring Boot和RocketMQ進行整合,并提供了一個簡單的示例工程,描述了如何本地啟動RocketMQ服務(wù)端,并使用IntelliJ IDEA創(chuàng)建和配置了一個Spring Boot項目,包含了生產(chǎn)者和消費者,并解決了在Spring Boot 3.x版本中RocketMQTemplate沒有bean注入的問題
    2024-11-11
  • SpringBoot中使用Quartz設(shè)置定時任務(wù)的實例詳解

    SpringBoot中使用Quartz設(shè)置定時任務(wù)的實例詳解

    Quartz是OpenSymphony開源組織在任務(wù)調(diào)度領(lǐng)域的一個開源項目,完全基于 Java 實現(xiàn),本文小編給大家介紹了SpringBoot中如何使用Quartz設(shè)置定時任務(wù),文中通過代碼示例給大家講解的非常詳細,需要的朋友可以參考下
    2023-12-12
  • Java?spring注解@PostConstruct實戰(zhàn)案例講解

    Java?spring注解@PostConstruct實戰(zhàn)案例講解

    我們在Spring項目中經(jīng)常會遇到@PostConstruct注解,可能有的伙伴對這個注解很陌生,下面這篇文章主要給大家介紹了關(guān)于Java?spring注解@PostConstruct實戰(zhàn)案例講解的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • Elasticsearch配置文件選項作用詳解(es7)

    Elasticsearch配置文件選項作用詳解(es7)

    這篇文章主要為大家介紹了Elasticsearch配置文件選項作用詳解(es7),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • Java并發(fā)中的ThreadLocal使用詳解

    Java并發(fā)中的ThreadLocal使用詳解

    ThreadLocal 是 Java 中實現(xiàn)線程局部變量的重要工具,它能讓每個線程擁有自己獨立的變量副本,從而在多線程環(huán)境下避免共享數(shù)據(jù)的競爭問題,下面給大家介紹java并發(fā)中的ThredLocal使用詳解,感興趣的朋友跟隨小編一起看看吧
    2026-03-03
  • SpringBoot詳解如何整合Redis緩存驗證碼

    SpringBoot詳解如何整合Redis緩存驗證碼

    本文主要介紹了SpringBoot集成Redis實現(xiàn)驗證碼的緩存簡單案例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • java操作excel導(dǎo)入導(dǎo)出的3種方式

    java操作excel導(dǎo)入導(dǎo)出的3種方式

    項目需要,要實現(xiàn)一個導(dǎo)入導(dǎo)出excel的功能,于是任務(wù)驅(qū)動著我學(xué)習到了POI、easypoi和easyexcel這3個java操作Excel的工具,下面這篇文章主要給大家介紹了關(guān)于java操作excel導(dǎo)入導(dǎo)出的3種方式,需要的朋友可以參考下
    2023-05-05

最新評論

凤山市| 深泽县| 仙居县| 鄂尔多斯市| 苍山县| 安泽县| 林周县| 乌审旗| 新密市| 黄陵县| 延边| 惠州市| 新巴尔虎左旗| 乡城县| 泾阳县| 嘉义县| 阿拉善盟| 安溪县| 彭州市| 马关县| 江华| 崇文区| 获嘉县| 开平市| 哈巴河县| 调兵山市| 梁山县| 凭祥市| 会泽县| 宝丰县| 苍南县| 凌源市| 青铜峡市| 崇信县| 白河县| 浪卡子县| 离岛区| 焉耆| 天津市| 建水县| 无为县|