pan*_*_ar 3 sorting merge compare java-8 java-stream
I have multiple streams of Student Object. I have to merge them in sorted order.
class Student {
private String branch;
private Integer rollNo;
private Date doj;
// Getters and Setters
}
Run Code Online (Sandbox Code Playgroud)
In another class, I have a method
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.
);
}
Run Code Online (Sandbox Code Playgroud)
Stream.of(s1, s2, s3) gives you a Stream<Stream<Student>>. In order to get a Stream<Student>, use flatMap:
Stream.of(s1, s2, s3).flatMap(Function.identity()).sorted(...)...
Run Code Online (Sandbox Code Playgroud)
To sort according to the required properties:
return Stream.of(s1, s2, s3)
.flatMap(Function.identity())
.sorted(Comparator.comparing(Student::getBranch).thenComparing(Student::getRollNo));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |