sorting - 合并和排序多个流 java 8

标签 sorting merge java-8 compare java-stream

我有多个学生对象流。我必须按排序顺序合并它们。

class Student {
    private String branch;
    private Integer rollNo;
    private Date doj;
    // Getters and Setters
}

在另一个类中,我有一个方法

private Stream<Student> mergeAndSort(Stream<Student> s1, Stream<Student> s2, Stream<Student> s3) {
    return Stream.of(s1, s2, s3).sorted(...
        // I tried this logic multiple times but is not working. How can I inject Student comparator here.
        // I have to sort based on branch and then rollNo.
    );
}

最佳答案

Stream.of(s1, s2, s3)给你一个 Stream<Stream<Student>> .为了得到Stream<Student> , 使用 flatMap :

Stream.of(s1, s2, s3).flatMap(Function.identity()).sorted(...)...

根据需要的属性排序:

return Stream.of(s1, s2, s3)
             .flatMap(Function.identity())
             .sorted(Comparator.comparing(Student::getBranch).thenComparing(Student::getRollNo));

关于sorting - 合并和排序多个流 java 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57973953/

相关文章:

java - 如何在 Java 中将 HashMap 中的键添加到具有相同顺序的列表中

sql-server - Yii:对动态列进行排序和格式化

svn - subversion 合并一个删除命令

r - 将一个数据帧中的数据与第二个数据帧中适合的时间 block 进行匹配

Java8 : Is there a way to get an instance method reference from a class method reference?

java - 制作一个 Comparator 对象来对通用 List<?使用 Collections.sort() 扩展 T>

Git:如何只 merge 修改过的文件

java-8 - OpenEJB 4.6.0 不以 jdk8 启动

java - 使用流 api 对对象列表中的多个不同字段求和?

python - Django:按多对多关系的字段排序