public class ListStream {public static void main(String[] args) {// 测试数据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.add(new Student("陈晴", "女", 18));list.add(new Student("王菲", "女", 19));list.add(new Student("李雷", "男", 20));// 查找性别为男的学生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中List 的Stream常用的几种用法相关推荐

  1. 深入理解 Java中的 流 (Stream)

    个人小站,正在持续整理中,欢迎访问:http://shitouer.cn 小站博文地址:深入理解 Java中的 流(Stream)机制 最近在看<Hadoop:The Definitive Gu ...

  2. Java中的流Stream和读取器Reader及其之间的关系

    Java中的流Stream和读取器Reader及其之间的关系 简介 InputStreamReader与BufferedReader是共享字节流的关系 简介 字节流(InputStream ):Inp ...

  3. (转)java中对集合对象list的几种循环访问总结

    Java集合的Stack.Queue.Map的遍历 在集合操作中,常常离不开对集合的遍历,对集合遍历一般来说一个foreach就搞定了,但是,对于Stack.Queue.Map类型的遍历,还是有一些讲 ...

  4. JAVA中线程同步的方法(7种)汇总

    JAVA中线程同步的方法(7种)汇总 同步的方法: 一.同步方法 即有synchronized关键字修饰的方法. 由于java的每个对象都有一个内置锁,当用此关键字修饰方法时, 内置锁会保护整个方法. ...

  5. java中为final变量赋值的几种方式

    java中为final变量赋值的几种方式 前言 使用final修饰变量,很多人第一时间想到的就是不可变.然后以为变量必须得在声明的时候就为其赋初始值,其实不然,本文将详细讲解java中使用final修 ...

  6. JAVA中获取文件MD5值的四种方法

    JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...

  7. java数组初始化的方式,java中初始化数组的方式有几种

    java中初始化数组的方式有几种 发布时间:2020-06-01 16:12:45 来源:亿速云 阅读:153 作者:鸽子 三种初始化方式: 1.静态初始化:创建+赋值 2.动态初始化:先创建再赋值 ...

  8. Java中Double保留自定义小数位的几种方法

    Java中Double保留自定义小数位的几种方法 在Java语言编程中我们有时候会有保留指定小数位的需求,那应该如何操作呢,下面带来几种方法:(这里的所有方法以保留两位小数位为例) 一. 四舍五入并保 ...

  9. java输出值取后两位小数,java中取小数点后两位(四种步骤)

    java中取小数点后两位(四种方法) 一 java.text.DecimalFormat df = new java.text.DecimalFormat("#.##"); dou ...

最新文章

  1. 路径,文件,目录,I/O常见操作汇总
  2. Android事件机制
  3. B4010 菜肴制作 拓扑排序(附随机跳题代码)
  4. JAVA复习( StringBuffer 和 StringBuilder)
  5. [Java基础]Lambda表达式的注意事项
  6. .NET Framewrok 4.0新增类库
  7. 连接mysql集群_mysql集群
  8. Sublime Text设置中文
  9. 8g内存一般占用多少_你到底需要多大内存?4G、8G还是16G
  10. ActiveMQ高可用集群的搭建
  11. 雷电html查看程序编辑程序,雷电模拟器应用操作
  12. 得力打印机(DL888D型号)Linux对接——Java+C版
  13. matlab中求叠加平均,eeglab教程系列(6)-数据叠加平均{1}(Data averaging)
  14. 解决backtrack5连接不上ssh问题
  15. 突破常规限制运行asp木马(转)
  16. linux添加网卡设备,Linux添加网卡教程
  17. java老版手机游戏合集破解
  18. element表格重新布局,element表格显示不全,doLayout
  19. windows 密码破解法
  20. IR780 NH2可用作光热疗法治疗剂,IR780-氨基

热门文章

  1. 2021安徽省安全员B证 多选题考试题库及答案
  2. c语言中地址值是什么意思,单片机C语言中如何区别是地址还是数值啊?
  3. 安卓手机里的短信删除了如何恢复
  4. 记录一个android性能优化宝藏级总结
  5. 儿子于靖洋180天的照片
  6. CentOS 使用二进制部署 Kubernetes 1.13集群
  7. 在arcengine中实现图片预览
  8. 计算机电源供电方式,电脑主板开关电源供电方式图文介绍
  9. [滴滴校招] 连续最大和
  10. BUG生命周期和管理