首页 > 编程语言 >Java中List的Stream常使用几种方法

Java中List的Stream常使用几种方法

时间:2024-10-16 10:36:23浏览次数:1  
标签:Java stream Stream list List System Student println out

// 测试数据
        List<Student> list = new ArrayList<>();
        list.add(new Student("张三", "男", 18));
        list.add(new Student("李四", "男", 17));
        list.add(new Student("红红", "女", 17));
        list.add(new Student("艳艳", "女", 20));
        list.add(new Student("王五", "男", 18));

        // 查找性别为男的学生
        List<Student> boys = list.stream().filter(s -> "男".equals(s.getGender())).collect(Collectors.toList());
        System.out.println("1、查找性别为男的学生:");
        System.out.println(boys.toString());

        // 查找性别为女的学生
        List<Student> girls = list.stream().filter(s -> "女".equals(s.getGender())).collect(Collectors.toList());
        System.out.println("2、查找性别为女的学生:");
        System.out.println(girls.toString());

        // map的key值true为男,false为女的集合
        Map<Boolean, List<Student>> map1 = list.stream().collect(partitioningBy(student -> "男".equals(student.getGender())));
        System.out.println("3、map的key值true为男,false为女的集合:");
        System.out.println(map1);

        // 求性别为男的学生总岁数
        int sum = list.stream().filter(s -> "男".equals(s.getGender())).mapToInt(Student::getAge).sum();
        System.out.println("4、求性别为男的学生总岁数:");
        System.out.println(sum);

        // 按性别进行分组统计人数
        Map<String, Integer> map2 = list.stream().collect(Collectors.groupingBy(Student::getGender, Collectors.summingInt(p -> 1)));
        System.out.println("5、按性别进行分组统计人数:");
        System.out.println(map2);

        // 按性别进行分组统计各组
        Map<String, List<Student>> map3 = list.stream().collect(Collectors.groupingBy(Student::getGender));
        System.out.println("6、按性别进行分组统计各组:");
        System.out.println(map3);

        // 判断是否有年龄大于25岁的学生
        boolean check = list.stream().anyMatch(student -> student.getAge() > 25);
        System.out.println("7、判断是否有年龄大于25岁的学生:");
        System.out.println(check);

        // 获取所有学生的姓名集合
        List<String> list2 = list.stream().map(Student::getName).collect(Collectors.toList());
        System.out.println("8、获取所有学生的姓名集合:");
        System.out.println(list2);

        // 求所有人的平均年龄
        double avg = list.stream().collect(averagingInt(Student::getAge));
        System.out.println("9、求所有人的平均年龄:");
        System.out.println(avg);

        // 求年龄最大的学生
        Student s = list.stream().reduce((student, student2) -> student.getAge() > student2.getAge() ? student : student2).get();
        System.out.println("10、求年龄最大的学生:");
        System.out.println(s);

        // 按照年龄从小到大排序
        List<Student> list3 = list.stream().sorted((s1, s2) -> s1.getAge().compareTo(s2.getAge())).collect(Collectors.toList());
        System.out.println("11、按照年龄从小到大排序:");
        System.out.println(list3);

        // 获取所有的名字,输出一个字符串
        String str = list.stream().map(Student::getName).collect(Collectors.joining(",", "[", "]"));
        System.out.println("12、获取所有的名字,输出一个字符串:");
        System.out.println(str);

        // 获取年龄的最大值、最小值、平均值、求和
        IntSummaryStatistics intSummaryStatistics = list.stream().mapToInt(Student::getAge).summaryStatistics();
        System.out.println("13、获取年龄的最大值、最小值、平均值、求和:");
        System.out.println(intSummaryStatistics);

标签:Java,stream,Stream,list,List,System,Student,println,out
From: https://www.cnblogs.com/setevn/p/18469282

相关文章

  • ### Cause: java.sql.SQLDataException: ORA-01841: (完整) 年份值必须介于 -4713 和
    执行sql,报错如下###Cause:java.sql.SQLDataException:ORA-01841:(完整)年份值必须介于-4713和+9999之间,且不为0 原因:数据库中存在的日期数据存在异常。导致拼接的日期部分存在问题,如下:SELECTLEAVE_END_D,LEAVE_END_T,TO_DATE(LEAVE_E......
  • Java Stream基本用法
    介绍JavaStream是Java8中引入的一个新的抽象概念,它允许以声明式的方式处理数据集合。Stream将要处理的元素集合视为一种流,在流的过程中,可以利用StreamAPI对元素进行各种操作,如筛选、排序、聚合等。Stream操作可以分为中间操作和终端操作,中间操作每次返回一个新的流,可以有多......
  • java计算机毕业设计共享电动车电池管理系统设计与实现(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着城市交通的日益拥堵以及人们对环保出行方式需求的增长,共享电动车逐渐成为城市交通体系中的重要组成部分。共享电动车的普及带来了便捷,但同时......
  • java计算机毕业设计爱心互助及物品回收管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景在现代社会,随着人们生活水平的提升以及消费的不断增长,物品的更新换代日益频繁,这导致了大量闲置物品的产生。与此同时,社会上还存在许多需要帮助的......
  • java计算机毕业设计汉服文化交流平台(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着中华文化的复兴,汉服作为传统文化的重要载体,正逐渐从历史的尘埃中走出,焕发出新的生机。近年来,汉服爱好者群体迅速扩大,他们不仅在日常生活中穿着汉......
  • 「Java开发指南」MyEclipse for Spring参考篇——参数
    MyEclipsev2024.1离线版下载MyEclipse技术交流群:742336981欢迎一起进群讨论1.代码生成注意:Spring搭建需要MyEclipseSpring或Bling授权。该面板控制当前MyEclipse工作区的Spring代码生成参数。代码生成参数2.自定义该面板控制当前MyEclipse工作区的自定义参数。......
  • Java 初学 day09
    java091、形式参数基本类型:当基本数据类型作为参数传递的时候,传递是具体的数值引用类型:数组:当数组作为方法的参数类型的时候,将来需要传递数组的地址值具体的类:当你看到一个类作为方法的参数类型的时候,将来调用需要传入该类或该类的子类的对象抽象类:当你看到......
  • C++ STL迭代器、resize和reserve区别、map和unordered_map区别,vector和List区别、map
    1.STL迭代器删除元素迭代器失效是指在对容器进行修改时,原有的迭代器可能变得不可用。正确删除元素的方法是使用erase,并返回新的有效迭代器。示例代码#include<iostream>#include<vector>intmain(){  std::vector<int>vec={1,2,3,4,5};  //输出......
  • Mybatis-plus 3.5.4 的AOP问题 java.lang.ClassCastException: class org.springfram
    报错,然后我把mapper上的@repository删掉就好了,为什么ChatGPT说:ChatGPT删除@Repository注解后问题解决,可能是与SpringAOP代理机制和MyBatisPlus结合时的一些细节有关。以下是原因分析:@Repository和SpringAOP代理的影响@Repository注解的主要作用是将类标记为持......
  • 个人Stream常用操作
    1、list转map我们可以使用Collectors.toMap()方法来实现。Person对象类@Data@Builder@AllArgsConstructor@NoArgsConstructorpublicclassPerson{privateStringname;//姓名privateintsalary;//薪资privateintage;//年龄privateStr......