java8特性 Lambdas(五) stream的操作集合

本文介绍Java Stream API的基本用法及高级技巧,通过示例展示如何筛选、排序、聚合数据等,帮助开发者掌握高效的集合处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Lambdas(五) stream的操作集合

  • 简介
    结合前几节所讲到的,stream可以进行一系列类似SQL的操作。它本质与Collections有很大区别,总结一下:

    • Collections是将数据直接加载到内存中,Stream是只加载要处理的数据
    • Stream对多核CPU进行了优化,Collections并没有
  • 如何使用
    背景参见第一节内容

        //得到平局分数大于60的学生,按照名字排序
        List<Student> list = studentQueryService.getStudentList().stream().filter(s -> s.getAvgScore() > 60)
                .sorted(comparing(Student::getCnName))
                .collect(toList());

        //返回所有学生名字符串,名字排序后,用“,”分割
        String str = studentQueryService.getStudentList().stream().map(s -> s.getCnName())
                .sorted()
                .distinct()
                .reduce("", (a, b) -> a + b + ", ");

        //是否存在年龄小于18岁的学生
        boolean isExist = studentQueryService.getStudentList().stream().anyMatch(s -> s.getAge() < 18);

        //打印年龄小于18岁的学生姓名
        studentQueryService.getStudentList().stream().filter(s -> s.getAge() < 18)
                .map(Student::getCnName)
                .forEach(System.out::println);

        //得到最高的平均分
        Optional<Double> highestAvgScore = studentQueryService.getStudentList().stream()
                .map(Student::getAvgScore)
                .reduce(Double::max);
        //Optional<T>可以有个默认值,在没有最大值的情况下
        highestAvgScore.orElse(1d);

        //得到平均分最小的学生记录
        studentQueryService.getStudentList().stream()
                .reduce((a, b) -> a.getAvgScore() < b.getAvgScore() ? a : b);
        //得到平均分最小的学生记录 更好的操作
        studentQueryService.getStudentList().stream()
                .min(comparing(Student::getAvgScore));

示例代码下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值