Stream流学习(五)collect操作

在这里插入图片描述
在这里插入图片描述

public class StreamCollect {
    List<Employee> employees = new ArrayList<>();

    {
        employees.add(new Employee(1, "张三", 20, 8895.31, true));
        employees.add(new Employee(2, "张四", 28, 7894.34, true));
        employees.add(new Employee(3, "张柳", 46, 6895.37, false));
        employees.add(new Employee(66, "王一", 54, 5895.5, true));
        employees.add(new Employee(56, "李四", 55, 4895.8, false));
        employees.add(new Employee(89, "李十一", 32, 9895.354, false));
        employees.add(new Employee(546, "张十五", 20, 18895.37, false));
        employees.add(new Employee(43, "刘十六", 43, 28895.35, true));
        employees.add(new Employee(66, "刘十六", 43, 28895.35, false));
    }
    /**
     * 测试reduce(T identity, BinaryOperator b)方法 可以将流中的数据反复结合起来,得到一个值。返回 T
     */
    @Test
    public void testStreamCollect() {
        //1. 将流中元素收集到List
        List<Employee> collect = employees.stream().collect(Collectors.toList());
        //2. 将流中元素收集到Set
        Set<Employee> collect1 = employees.stream().collect(Collectors.toSet());
        //3. 将流中元素收集到创建的集合
        Collection<Employee> collect2 = employees.stream().collect(Collectors.toCollection(ArrayList::new));
        //4. 计算流中的元素个数
        Long collect3 = employees.stream().collect(Collectors.counting());
        System.out.println("流中的元素个数是:"+collect3);
        //5. 对流中元素的整数属性求和
        IntSummaryStatistics sumAge = employees.stream().collect(Collectors.summarizingInt(Employee::getAge));
        System.out.println("流中的元素年龄相加是:"+sumAge);
        //6. 对流中元素的整数属性求平均值
        Double averageAge = employees.stream().collect(Collectors.averagingInt(Employee::getAge));
        System.out.println("流中的元素年龄平均值是:"+averageAge);
        //7. 连接流中的每个字符串
        String join = employees.stream().map(Employee::getName).collect(Collectors.joining("_"));
        System.out.println("流中的元素姓名连接后是:"+join);
        //8. 其中的最大值
        Optional<Employee> collect4 = employees.stream().collect(Collectors.maxBy(Comparator.comparingDouble(Employee::getSalary)));
        System.out.println("流中的元素工资最高的是:"+collect4.get());
        //9. 其中的最小值
        Optional<Employee> min = employees.stream().collect(Collectors.minBy(Comparator.comparingDouble(Employee::getSalary)));
        System.out.println("流中的元素工资最低的是:"+min.get());
        //10. 归约产生的类型 从第0个元素累加
        Integer collect5 = employees.stream().collect(Collectors.reducing(0, Employee::getAge, Integer::sum));
        System.out.println("归约:"+collect5);
        //11. 分组,比较常用
        Map<Integer, List<Employee>> collect6 = employees.stream().collect(Collectors.groupingBy(Employee::getAge));
        System.out.println("分组:"+collect6);
        //12. 分区,根据TRUE或者FALSE进行分区
        Map<Boolean, List<Employee>> collect7 = employees.stream().collect(Collectors.partitioningBy(Employee::getStatus));
        System.out.println("分区:"+collect7);
    }

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YonChao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值