【体系课】吃透前端工程化,大厂级实战项目以战带练
Java12新特性及代码示例
teeing 搜集器已公開爲静態辦法Collectors::teeing。該搜集器將其輸入轉發給其他兩個搜集器,然後將它們的結果運用函數兼並。
teeing(Collector, Collector, BiFunction)承受兩個搜集器和一個兼並其結果的函數。傳送給結果搜集器的每個元素都由兩個下游搜集器處置,然後運用指定的兼並函數將它們的結果兼並到最終結果中。
例如,在給定的學生列表中,假如我們想找出學生均匀分/總分/最低分/最高分,我們能夠運用 teeing collector 在單個语句中完成。
package cn.dayangshuo.collectors;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author DAYANG
*/
public class TeeingTest {
public static void main(String[] args) {
List list = Arrays.asList(
new Student("張三", 96),
new Student("李四", 98),
new Student("大陽", 82));
//均匀分 總分
String result = list.stream().collect(Collectors.teeing(
Collectors.averagingInt(Student::getScore),
Collectors.summingInt(Student::getScore),
(s1, s2) -> s1 + ":" + s2));
//最低分 最高分
String result2 = list.stream().collect(Collectors.teeing(
Collectors.minBy(Comparator.comparing(Student::getScore)),
Collectors.maxBy(Comparator.comparing(Student::getScore)),
(s1, s2) -> s1.orElseThrow() + ":" + s2.orElseThrow()
));
System.out.println(result);
System.out.println(result2);
}
static class Student {
private String name;
private Integer score;
public Student(String name, Integer score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getScore() {
return score;
}
public void setScore(Integer score) {
this.score = score;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", score=" + score +
'}';
}
}
}
download链接:pan.baidu.com/s/1KaXncJbd… 提取码:eti9 --来自百度网盘超级会员V4的分享