Stream(一)

并行流与串行流区别

串行流:单线程的方式操作; 数据量比较少的时候。

并行流:多线程方式操作;数据量比较大的时候,原理:

Fork join 将一个大的任务拆分n多个小的子任务并行执行,

最后在统计结果,有可能会非常消耗cpu的资源,确实可以

提高效率。

注意:数据量比较少的情况下,不要使用并行流

对象某字段和

   Stream<Student> stream = students.stream();
//        Optional<Student> reduce = stream.reduce(new BinaryOperator<Student>() {
//            @Override
//            public Studentapply(Student student, Student student2) {
//                student.setAge(student.getAge() + student2.getAge());
//                return student;
//            }
//        });      

  Optional<Student> reduce = stream.reduce((user1, user2) -> {
            user1.setAge(user1.getAge() + user2.getAge());
            return user1;
        });
        System.out.println(reduce.get());



------------------------------------------
  Stream<Integer> integerStream = Stream.of(10, 30, 80, 60, 10, 70);

//        Optional<Integer> reduce = integerStream.reduce(new BinaryOperator<Integer>() {
//                        @Override
//            public Integer apply(Integer a1, Integer a2) {
//                return a1 + a2;
//            }
//        });
        Optional<Integer> reduce = integerStream.reduce((a1, a2) -> a1 + a2);
        System.out.println(reduce.get());

求最大最小值

Optional<Student> max = stream.max((o1, o2) -> o1.getAge() - o2.getAge());
        System.out.println(max.get());
Optional<Student> min = stream.min(((o1, o2) -> o1.getAge() - o2.getAge()));
        System.out.println(min.get());

                //最小值一样
 //Optional<Student> max = stream.max(new Comparator<Student>() {
//            @Override
//            public int compare(Student o1, Student o2) {
//                return o1.getAge() - o2.getAge();
//            }
//        });
//        System.out.println(max.get());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值