首页 > 编程语言 >Java开发:列表List的流操作

Java开发:列表List的流操作

时间:2022-08-29 09:56:28浏览次数:59  
标签:Java Collectors stream List list testClass 列表 BigDecimal

一、示例数据

  1、类结构

字段名称 字段类型 字段备注
id Integer 唯一标识
score Double 分数
money BigDecimal 奖金

  2、列表初始化数据

  

id score money
1 96.0 5000
2 84.5 4000
3 70.0 3000
4 74.0 3000
5 82.0 4000

二、流操作

  1、求和

  int、double、long类型求和(哪种类型的就将mapTo方法更换为对应的类型,括号里为类里要求和的数据列,后缀是sum方法):

Double d = list.stream().mapToDouble(TestClass :: getScore).sum();

  BigDecimal类型求和:

BigDecimal b = list.stream().map(TestClass::getMoney).reduce(BigDecimal.ZERO,BigDecimal::add);

  2、筛选

  筛选单个:

TestClass testClassFindOne = list.stream().filter(testClass -> testClass.score == 70.0).findAny().orElse(null);

  筛选多个:

List<TestClass> testClassFindManyList = list.stream().filter(testClass -> testClass.score > 80.0).collect(Collectors.toList());

  筛选的时候都是使用filter方法,区别在于条件不同,单个属性通过不同的判断条件来判断是否符合筛选条件。

  查单个时是使用精准匹配的条件,且使用findAny()在列表中提取出符合条件的元素,附加条件orElse(null)表示的是如果没有查到符合条件的元素时,则返回空。

  查多个时往往是使用范围性的条件,如大于小于或者存在重复数据时进行匹配,查询完之后通过collect(Collectors.toList())进行组合,返回的是一个包含符合条件元素的列表,无符合条件的元素时为空列表。

  3、遍历

list.stream().forEach(testClass -> {
      xxxxxx();
});

  遍历使用foreach方法,对列表中的每个元素执行操作。

  4、统计

Long count = list.stream().filter(testClass -> testClass.score > 80).count();

  统计使用count()方法进行计数并返回。

  5、分组

Map<Integer,List<TestClass>> testClassGroupList = list.stream().collect(Collectors.groupingBy(TestClass :: getId));

  分组通过Collectors.groupingBy进行,参数为实体类里的数据列,数据类型为int。

  注:该方法进行分组时返回的Map类型默认为HashMap,是没有顺序的。如果需要顺序进行分组,可以添加设置LinkedHashMap

Map<Integer,List<TestClass>> testClassGroupList2 = list.stream().collect(Collectors.groupingBy(TestClass :: getId, LinkedHashMap::new,Collectors.toList()));

  

标签:Java,Collectors,stream,List,list,testClass,列表,BigDecimal
From: https://www.cnblogs.com/guobin-/p/16632877.html

相关文章

  • 使用java 求完数
    完数是什么如果一个数恰好等于它的真因子之和,则称该数为“完全数” [2]  。各个小于它的约数(真约数,列出某数的约数,去掉该数本身,剩下的就是它的真约数)的和等于它本身的......
  • 配置java空白项目
    newproject 创建新的项目文件加载完成后点击file创建module模块点击java创建java文件 记得将文件标记为源代码不然无法运行创建完成后点击file点击files......
  • stream.sum List和json互转
    原文链接:https://blog.csdn.net/fighting_xuan/article/details/112609463https://blog.csdn.net/weixin_49186526/article/details/116098255//这两部分效果相同mo......
  • 了解异步 JavaScript
    了解异步JavaScriptphotofromunsplash介绍我发现异步JavaScript是大多数初学者最容易混淆的概念之一。我也不容易掌握。虽然我看了很多教程,也阅读了很多关于它的......
  • 为什么在Javascript中声明之前可以访问变量?
    为什么在Javascript中声明之前可以访问变量?毫无疑问,当今最常用和最著名的语言之一是JavaScript,如今它无处不在,我们可以创建Web应用程序和系统,在后端开发API并创建移......
  • java - 获取视频的第n帧画面,支持avi、mp4、wmv格式
    1.背景网上的东西真实够坑的,用不了就算了,还基本是复制粘贴2,解决需要导包,必须是这两个版本<dependency><groupId>org.bytedeco</groupId><......
  • Java入门-程序员的世界“Hello,World!”
    HelloWorld!java大小写敏感,尽量使用英文,用英文符号使用cmd输出建文件夹存放代码,新建Java文件,编写代码如下,编译javacjava,生成class文件,运行class文件:publicclassHell......
  • Java入门-编程环境搭建和IDEA软件安装
    JDK8下载安装若之前下载过JDK,则卸载JDK:删除java的安装目录、删除JAVA_HOME、删除path下关于java的目录、cmdjava_version安装JDK:百度JDK8、找到下载地址、同意协议、下......
  • vue3 基础-列表渲染
    本篇讲列表渲染,主要是对v-on指令配合v-if和一些数组相关的方法来体验vue的模板渲染方法.数组元素的渲染<!DOCTYPEhtml><htmllang="en"><head><title>列表......
  • 使用Java刷评论为平台引流的经历
    场景:需要在一网站中批量评论留言。分析接口:列表接口获取idList;评论接口使用的是get请求,拼接上id。获取idList接口:http://yyy.xxx.cn/?r=matchV4/search/GetJson&page=2&p......