JAVA8 Stream 收集

 List<Student> students = Arrays.asList(
            new Student(1,"zhangsan","class1",18,60),
            new Student(2,"lisi","class1",20,59),
            new Student(3,"wangwu","class2",18,100),
            new Student(4,"wangwu","class2",16,100),
            new Student(5,"wangwu","class2",22,100),
            new Student(6,"zhaoliu","class2",18,80));
 *toList List<T> 把流中元素收集到List
 * toSet Set<T> 把流中元素收集到Set
 * toCollection Collection<T> 把流中元素收集到创建的集合
 * counting Long 计算流中元素的个数
 * summingInt Integer 对流中元素的整数属性求和
 * averagingInt Double 计算流中元素Integer属性的平均值
 * summarizingInt IntSummaryStatistics 收集流中Integer属性的统计值。
 * joining String 连接流中每个字符串
 * maxBy Optional<T> 根据比较器选择最大值
 * minBy Optional<T> 根据比较器选择最小值
 * reducing 归约产生的类型 从一个作为累加器的初始值
 * 开始,利用BinaryOperator与流中元素逐个结合,从而归约成单个值
 * inttotal=list.stream().collect(Collectors.reducing(0, Employee::getSalar, Integer::sum));
 * collectingAndThen 转换函数返回的类型 包裹另一个收集器,对其结果转换函数
 * groupingBy Map<K, List<T>> 根据某属性值对流分组,属性为K,结果为V
 * partitioningBy Map<Boolean, List<T>> 根据true或false进行分区
 
    @Test
    public void test7(){
        List<String> list = students.stream().map(Student::getName).collect(Collectors.toList());
        System.out.println(list);
        students.stream().map(Student::getGrade).collect(Collectors.toCollection(ArrayList::new));
        //counting
        Long count = students.stream().collect(Collectors.counting());
        System.out.println(count);
        //averagingInt
        System.out.println(students.stream().collect(Collectors.averagingInt(Student::getGrade)));
        //groupingBy
        System.out.println(students.stream().collect(Collectors.groupingBy(e->e.getClazz())));
        //joining
        System.out.println(students.stream().map(Student::getName).collect(Collectors.joining("--","begin","end")));
        //collectingAndThen
        Integer size = students.stream().collect(Collectors.collectingAndThen(Collectors.toList(), List::size));
        System.out.println(size);
        //reducing
        System.out.println(students.stream().map(Student::getGrade).collect(Collectors.reducing(Integer::sum)));
    }

输出结果为:

猜你喜欢

转载自blog.csdn.net/zwq_zwq_zwq/article/details/82316356