Java8 list.stream()操作使用心得

2023-10-27

准备数据

实体类

@Data
public class UserInfo {
	
	String personNo;
	
	String name;

	int num;

	int age;

}

类似输入

[
{"personNo": "123","name":"张三","age":20},
{"personNo": "123","name":"张三","age":21},
{"personNo": "1234","name":"李四","age":19}
]

1,把list中某个字段用逗号相连

joining(“,”)

String result = list.stream().map(UserInfo::getPersonNo).collect(Collectors.joining(","))

输出

123,123,1234

2,根据某个字段分组

groupingBy()

Map<String,List<UserInfo>> result = list.stream().collect(Collectors.groupingBy(UserInfo::getName)):

key为null时不报错的处理方法

public static <T,A> Collector<T ,?, Map<A,List<T>>> groupByWithNullKeys(Function<? super T,
? extends A> classifier){
	return Collectors.toMap(
			classifier,
			Collections::singletonList,
			(List<T> oldList,List<T> newEl) -> {
				List<T> newList = new ArrayList<>(oldList.size()+1);
				newList.addAll(oldList);
				newList.addAll(newEl);
				return newList;
				}
	);
}
Map<String,List<UserInfo>> result = list.stream().collect(Utils.groupByWithNullKeys(UserInfo::getName)):

输出如下

key  value
李四 [{"personNo": "1234","name":"李四","age":19}]
张三 [{"personNo": "123","name":"张三","age":20},{"personNo": "123","name":"张三","age":21}]

3,取出list中某个字段最大值的记录

max

UserInfo userInfo = list.stream().max(Comparator.comparing(UserInfo::getAge)).get();

输出如下

{"personNo": "123","name":"张三","age":21}

4,根据某个字段倒序

sorted,默认升序,可通过reversed来变成降序

List<UserInfo> result = list.stream().sorted(Comparator.comparing(UserInfo::getNum).reversed()).collect(Collectors.toList());

输出如下:

[
{"personNo": "123","name":"张三","age":21},
{"personNo": "123","name":"张三","age":20},
{"personNo": "1234","name":"李四","age":19}
]

5,根据某个字段求和

mapToInt sum

int result = list.stream().mapToInt(UserInfo::getAge).sum();

输出如下

60

6,根据某个字段过滤

filter

List<UserInfo> result = list.stream().filter(u -> "李四".equals(u.getName())).collect(Collectors.toList());

输出如下:

{"personNo": "1234","name":"李四","age":19}

7,全字段去重

distinct count,全部字段值都一样才会去重,部分字段一样不会去重

int count = list.stream().distinct().count();
List<UserInfo> result = list.stream().distinct().collect(Collectors.toList());

输出如下

3
[
{"personNo": "123","name":"张三","age":21},
{"personNo": "123","name":"张三","age":20},
{"personNo": "1234","name":"李四","age":19}
]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java8 list.stream()操作使用心得 的相关文章

  • 在 JTable 中移动行

    我使用 MVC 模式 并且有一个如下所示的 JTable List
  • Java 中的 XPath 节点集

    我在 eclipse 中有这段代码 NodeSet nodes NodeSet xPath evaluate expression inputSource XPathConstants NODESET 它给我 NodeSet 上的编译时错误
  • 如何将 Java 赋值表达式转换为 Kotlin

    java中的一些东西就像 int a 1 b 2 c 1 if a b c System out print true 现在它应该转换为 kotlin 就像 var a Int 1 var b Int 2 var c Int 1 if a
  • 如何在 JFace 的 TableViewer 中创建复选框?

    我创建了一个包含两列的 tableViewer 我想将其中一列设为复选框 为此 我创建了一个 CheckBoxCellEditor 但我不知道为什么它不起作用 名为 tableName 的列显示其值正常 色谱柱规格如下 String COL
  • 我需要在 Spring 中检查每个控制器中的有效会话吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 假设在 Spring Mvc 的 Web 应用程序中 我们是否需要检查每个控制器或 jsps 中的有效会话 我该如何解决 MVC 中的
  • Java程序中的数组奇怪的行为[重复]

    这个问题在这里已经有答案了 我遇到了这个 Java 程序及其以意想不到的方式运行 以下程序计算 int 数组中元素对之间的差异 import java util public class SetTest public static void
  • JNI 不满意链接错误

    我想创建一个简单的 JNI 层 我使用Visual studio 2008创建了一个dll Win 32控制台应用程序项目类型 带有DLL作为选项 当我调用本机方法时 出现此异常 Exception occurred during even
  • CXF Swagger2功能添加安全定义

    我想使用 org apache cxf jaxrs swagger Swagger2Feature 将安全定义添加到我的其余服务中 但是我看不到任何相关方法或任何有关如何执行此操作的资源 下面是我想使用 swagger2feature 生成
  • Prim 的迷宫生成算法:获取相邻单元格

    我基于 Prim 算法编写了一个迷宫生成器程序 该算法是 Prim 算法的随机版本 从充满墙壁的网格开始 选择一个单元格 将其标记为迷宫的一部分 将单元格的墙壁添加到墙壁列表中 While there are walls in the li
  • 从 android 简单上传到 S3

    我在网上搜索了从 android 上传简单文件到 s3 的方法 但找不到任何有效的方法 我认为这是因为缺乏具体步骤 1 https mobile awsblog com post Tx1V588RKX5XPQB TransferManage
  • 尝试使用 Ruby Java Bridge (RJB) gem 时出现错误“无法创建 Java VM”

    我正在尝试实现 Ruby Java Bridge RJB gem 来与 JVM 通信 以便我可以运行 Open NLP gem 我在 Windows 8 上安装并运行了 Java 所有迹象 至少我所知道的 都表明 Java 已安装并可运行
  • Java中未绑定通配符泛型的用途和要点是什么?

    我不明白未绑定通配符泛型有什么用 具有上限的绑定通配符泛型 stuff for Object item stuff System out println item Since PrintStream println 可以处理所有引用类型 通
  • 如何在 Maven 中显示消息

    如何在 Maven 中显示消息 在ant中 我们确实有 echo 来显示消息 但是在maven中 我该怎么做呢 您可以使用 antrun 插件
  • 运行 Jar 文件时出现问题

    我已将 java 项目编译成 Jar 文件 但运行它时遇到问题 当我跑步时 java jar myJar jar 我收到以下错误 Could not find the main class myClass 类文件不在 jar 的根目录中 因
  • 如何配置eclipse以保持这种代码格式?

    以下代码来自 playframework 2 0 的示例 Display the dashboard public static Result index return ok dashboard render Project findInv
  • Springs 元素“beans”不能具有字符 [children],因为该类型的内容类型是仅元素

    我在 stackoverflow 中搜索了一些页面来解决这个问题 确实遵循了一些正确的答案 但不起作用 我是春天的新人 对不起 这是我的调度程序 servlet
  • 查看Jasper报告执行的SQL

    运行 Jasper 报表 其中 SQL 嵌入到报表文件 jrxml 中 时 是否可以看到执行的 SQL 理想情况下 我还想查看替换每个 P 占位符的值 Cheers Don JasperReports 使用 Jakarta Commons
  • KeyPressed 和 KeyTyped 混淆[重复]

    这个问题在这里已经有答案了 我搜索过之间的区别KeyPressedand KeyTyped事件 但我仍然不清楚 我发现的一件事是 Keypressed 比 KeyTyped 首先被触发 请澄清一下这些事件何时被准确触发 哪个适合用于哪个目的
  • JAVA - 如何从扫描仪读取文件中检测到“\n”字符

    第一次海报 我在读取文本文件的扫描仪中读取返回字符时遇到问题 正在读取的文本文件如下所示 test txt start 2 0 30 30 1 1 90 30 0 test txt end 第一行 2 表示两个点 第二行 位置索引 0 xp
  • Swagger/Openapi-Annotations:如何使用 $ref 生成 allOf?

    我正在生成 Rest 端点 包括添加OpenAPI Swagger对生成的代码进行注释 虽然它对于基本类型运行得很好 但我在自定义类方面遇到了一些问题 现在我有很多自定义类的重复架构条目 使用 Schema 实现 MyClass class

随机推荐

  • 编程离软件工程有多远?

    原文地址 http kb cnblogs com page 160717 作者 周爱民 来源 VeDa原型 发布时间 2012 10 19 11 31 阅读 5135 次 原文链接 全屏阅读 收藏 语言只是工具 我曾经是非常执著的开发人员
  • vue-element-ui 中使用 el-form 报错 “TypeError: this.$refs[formName] is undefined“

    情况说明 使用了 element ui 里面
  • 【Java】 关于解决 错误: 找不到或无法加载主类 原因: java.lang.ClassNotFoundException 的方法

    哭了 泪目 出现 java lang ClassNotFoundException 的原因 当Java的版本高于10的时候不需要配置CLASSPATH 环境变量 只需要配置JAVA HOME和PATH即可
  • Springboot集成logback

    一 logback的介绍 Logback是由log4j创始人设计的另一个开源日志组件 官方网站 http logback qos ch 它当前分为下面下个模块 logback core 其它两个模块的基础模块 logback classic
  • 朱自清《春》加薪版

    为什么80 的码农都做不了架构师 gt gt gt 盼望着 盼望着 文件来了 加薪的脚步近了 一切都像刚睡醒的样子 欣欣然张开了眼 物价涨起来了 房价涨起来了 职工的工资也要涨了 大家都高兴的欢呼起来了 标准悄悄地从官员口里漏出来 嫩嫩 的
  • 虚拟化技术及实时虚拟化概述

    版权声明 本文为本文为博主原创文章 未经本人同意 禁止转载 如有问题 欢迎指正 博客地址 https www cnblogs com wsg1100 文章目录 一 前言 二 分时系统 三 虚拟化介绍 四 虚拟化实现方式及分类 模拟器 Typ
  • linux下载安装jdk

    1 从官网下载jdk 如下是jdk下载地址 直接点击即可 Java Downloads Oracle 下载自己需要的jdk即可 建议下载jdk8 2 将jdk传入linux服务器 2 1 首先在linux中创建文件夹并且进入 mkdir o
  • jdbc autoReconnect=true 参数设置导致 slow log 爆表。

    1 过程 同事按照文档上配置了下面的jdbc url jdbc mysql ip port db autoReconnect true useUnicode true characterEncoding utf 8 结果导致了 mysql
  • Ansible介绍

    1 安装ansible 1 下载并安装ansible 所有节点安装依赖 yum install python y 添加源 yum y install epel release 查看可安装的版本 yum list grep ansible 下
  • 3.3 Makefile的嵌套包含

    一 Makefile包含子Makefile的示例 下面是一个示例Makefile和sub mk的内容 为了让主Makefile调用子Makefile 并分别输出一句打印 首先 主Makefile的内容如下 PHONY all all MAK
  • 4.2.5 预测分析法与预测分析表的构造

    4 2 5 预测分析法与预测分析表的构造 预测分析法也称为 LL 1 分析法 这种分析法是确定的自上而下分析的另一种方法 采用这种方法进行语法分析要求描述语言的文法是 LL 1 文法 一个预测分析器由一张预测分析表 也称为 LL 1 分析表
  • AES,SHA1,DES,RSA,MD5区别

    AES 更快 兼容设备 安全级别高 SHA1 公钥后处理回传 DES 本地数据 安全级别低 RSA 非对称加密 有公钥和私钥 MD5 防篡改 相关 公开密钥加密 英语 public key cryptography 又译为公开密钥加密 也称
  • python魔法方法

    什么是魔术方法 在Python中 所有以双下划线 包起来的方法 统称为Magic Method 魔术方法 它是一种的特殊方法 普通方法需要调用 而魔术方法不需要调用就可以自动执行 魔术方法在类或对象的某些事件出发后会自动执行 让类具有神奇的
  • Spring Cloud 服务追踪、Spring Boot Admin

    服务链路追踪 概述 这篇文章主要讲解服务追踪组件 ZipKin ZipKin 简介 ZipKin 是一个开放源代码的分布式跟踪系统 由 Twitter 公司开源 它致力于收集服务的定时数据 以解决微服务架构中的延迟问题 包括数据的收集 存储
  • vue3内对vue-router4的基本使用

    1 安装 vue router 默认安装的就是 4版本 yarn add vue router npm i vue router 2 在根路径上新建文件夹 router并在里面 新建 index js 文件 编码 import create
  • 预测时间序列(第 1 部分):经验分解模式(EMD)方法

    概述 任何交易者的成功主要取决于他或她 透视未来 的能力 即推测一段时间周期后价格如何变化的能力 为了解决这个问题 重要的是要拥有各种类的工具和功能 从基准市场特征的最新更新 到技术分析算法 运用时间序列预测的数学方法 价格本身亦或技术指标
  • 在 JavaScript 中监听 DOM 节点的变化

    要在 JavaScript 中监听 DOM 节点的变化 您可以使用 MutationObserver API MutationObserver 提供了一种监视对 DOM 树所做更改的能力 并在每次更改发生时触发回调函数 以下是一个示例 演示
  • R语言(创建矩阵,矩阵的运算,数据包的使用,读取文件)

    数据包使用 data 显示R语言自带的数据包 datasets library datasets 加载datasets数据包 data package mtcars 加载完成后才可以调用 调用mtcars数据包 mtcars 查看mtcar
  • 分段函数 python

    目录 题目描述 AC代码 题目描述 题目描述 有一个函数 y x x lt 1 2x 1 1 lt x lt 10 3x 11 x gt 10 写一段程序 输入x 输出y 输入 一个数x 输出 一个数y AC代码 x int input y
  • Java8 list.stream()操作使用心得

    文章目录 准备数据 1 把list中某个字段用逗号相连 2 根据某个字段分组 3 取出list中某个字段最大值的记录 4 根据某个字段倒序 5 根据某个字段求和 6 根据某个字段过滤 7 全字段去重 准备数据 实体类 Data public