【体系课】吃透前端工程化,大厂级实战项目以战带练

276 阅读1分钟

【体系课】吃透前端工程化,大厂级实战项目以战带练

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的分享