java中List 的Stream常用的几种用法
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常用的几种用法相关推荐
- 深入理解 Java中的 流 (Stream)
个人小站,正在持续整理中,欢迎访问:http://shitouer.cn 小站博文地址:深入理解 Java中的 流(Stream)机制 最近在看<Hadoop:The Definitive Gu ...
- Java中的流Stream和读取器Reader及其之间的关系
Java中的流Stream和读取器Reader及其之间的关系 简介 InputStreamReader与BufferedReader是共享字节流的关系 简介 字节流(InputStream ):Inp ...
- (转)java中对集合对象list的几种循环访问总结
Java集合的Stack.Queue.Map的遍历 在集合操作中,常常离不开对集合的遍历,对集合遍历一般来说一个foreach就搞定了,但是,对于Stack.Queue.Map类型的遍历,还是有一些讲 ...
- JAVA中线程同步的方法(7种)汇总
JAVA中线程同步的方法(7种)汇总 同步的方法: 一.同步方法 即有synchronized关键字修饰的方法. 由于java的每个对象都有一个内置锁,当用此关键字修饰方法时, 内置锁会保护整个方法. ...
- java中为final变量赋值的几种方式
java中为final变量赋值的几种方式 前言 使用final修饰变量,很多人第一时间想到的就是不可变.然后以为变量必须得在声明的时候就为其赋初始值,其实不然,本文将详细讲解java中使用final修 ...
- JAVA中获取文件MD5值的四种方法
JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...
- java数组初始化的方式,java中初始化数组的方式有几种
java中初始化数组的方式有几种 发布时间:2020-06-01 16:12:45 来源:亿速云 阅读:153 作者:鸽子 三种初始化方式: 1.静态初始化:创建+赋值 2.动态初始化:先创建再赋值 ...
- Java中Double保留自定义小数位的几种方法
Java中Double保留自定义小数位的几种方法 在Java语言编程中我们有时候会有保留指定小数位的需求,那应该如何操作呢,下面带来几种方法:(这里的所有方法以保留两位小数位为例) 一. 四舍五入并保 ...
- java输出值取后两位小数,java中取小数点后两位(四种步骤)
java中取小数点后两位(四种方法) 一 java.text.DecimalFormat df = new java.text.DecimalFormat("#.##"); dou ...
最新文章
- 路径,文件,目录,I/O常见操作汇总
- Android事件机制
- B4010 菜肴制作 拓扑排序(附随机跳题代码)
- JAVA复习( StringBuffer 和 StringBuilder)
- [Java基础]Lambda表达式的注意事项
- .NET Framewrok 4.0新增类库
- 连接mysql集群_mysql集群
- Sublime Text设置中文
- 8g内存一般占用多少_你到底需要多大内存?4G、8G还是16G
- ActiveMQ高可用集群的搭建
- 雷电html查看程序编辑程序,雷电模拟器应用操作
- 得力打印机(DL888D型号)Linux对接——Java+C版
- matlab中求叠加平均,eeglab教程系列(6)-数据叠加平均{1}(Data averaging)
- 解决backtrack5连接不上ssh问题
- 突破常规限制运行asp木马(转)
- linux添加网卡设备,Linux添加网卡教程
- java老版手机游戏合集破解
- element表格重新布局,element表格显示不全,doLayout
- windows 密码破解法
- IR780 NH2可用作光热疗法治疗剂,IR780-氨基