java8 Stream使用中的一些实践
文章目录
- 使用Stream将List转换为Map时key冲突问题
- 使用Stream时得到List的size为不为0,元素Object为null问题
使用Stream将List转换为Map时key冲突问题
如下:
把userList转换为userMap
id为key user 为value 由于user2和user3的id相同,所以会报错
@Testvoid testStream0() {User user1 = new User();user1.setId("1");user1.setName("小明");User user2 = new User();user2.setId("2");user2.setName("小红");User user3 = new User();user3.setId("2");user3.setName("小蓝");List<User> userList = new ArrayList<>();userList.add(user1);userList.add(user2);userList.add(user3);// 把userList转换为userMap key为id value为user 由于user2和user3的id相同,所以会报错Map<String, User> userMap = userList.stream().collect(Collectors.toMap(User::getId, Function.identity()));}
执行结果:Duplicate key
java.lang.IllegalStateException: Duplicate key User(id=2, name=小红)at java.util.stream.Collectors.lambda$throwingMerger$0(Collectors.java:133)at java.util.HashMap.merge(HashMap.java:1255)at java.util.stream.Collectors.lambda$toMap$58(Collectors.java:1320)
正确使用方式:
明确指定key冲突时选择哪一个
// 把userList转换为userMap key为id value为user 遇到key冲突时,选择第二个key的值value2覆盖第一个key的值value1
Map<String, User> userMap = userList.stream().collect(Collectors.toMap(User::getId, Function.identity(), (value1,value2)-> value2));
使用Stream时得到List的size为不为0,元素Object为null问题
@Testvoid testStream0() {User user1 = new User();user1.setId("1");List<User> userList = new ArrayList<>();userList.add(user1);List<String> list = userList.stream().map(u -> {if (StringUtils.isNotBlank(u.getName())) {return u.getName();} else {return null;}}).collect(Collectors.toList());System.out.println(list.size());System.out.println(JSON.toJSONString(list));}
可以使用filter方法过滤掉null值
List<String> list = userList.stream().map(u -> {if (StringUtils.isNotBlank(u.getName())) {return u.getName();} else {return null;}}).filter(Objects::nonNull).collect(Collectors.toList());
相关文章:
java8 Stream使用中的一些实践
文章目录 使用Stream将List转换为Map时key冲突问题使用Stream时得到List的size为不为0,元素Object为null问题 使用Stream将List转换为Map时key冲突问题 如下: 把userList转换为userMap id为key user 为value 由于user2和user3的id相同,所以会…...
入门篇:Kafka基础知识·
目录 一、Kafka简介 二、Kafka核心组件 三、Kafka安装与配置 1.下载与解压 2.配置环境变量 3.配置server.properties 4.启动Kafka服务 四、Kafka基本操作 1.创建Topic 2.查看Topic列表 3.发送消息 4.接收消息 五、Kafka进阶使用 1.消息持久化与存储 2.消息顺序与…...
SWAT模型高阶应用暨SWAT模型无资料地区建模、不确定分析及气候、土地利用变化对水资源与面源污染影响分析
原文链接:SWAT模型高阶应用暨SWAT模型无资料地区建模、不确定分析及气候、土地利用变化对水资源与面源污染影响分析https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247604401&idx4&snd2d39846dce07bee765c820de1cf92f3&chksmfa821956cdf5904…...
每日一题——力扣206. 反转链表(举一反三、思想解读)
一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三题目链接 目录 菜鸡写法编辑 代码点评 代码分析 时间复杂度 空间复杂度 专业点评 另一种方法编辑 代码点评 代码逻辑 时间复杂度 空间…...
【qt】纯代码界面设计
界面设计目录 一.界面设计的三种方式1.使用界面设计器2.纯代码界面设计3.混合界面设计 二.纯代码进行界面设计1.代码界面设计的总思路2.创建项目3.设计草图4.添加组件指针5.初始化组件指针6.添加组件到窗口①水平布局②垂直布局③细节点 7.定义槽函数8.初始化信号槽9.实现槽函数…...
【深度学习】SDXL中的Offset Noise,Diffusion with Offset Noise,带偏移噪声的扩散
https://www.crosslabs.org//blog/diffusion-with-offset-noise 带有偏移噪声的扩散 针对修改后的噪声进行微调,使得稳定扩散能够轻松生成非常暗或非常亮的图像。 作者:尼古拉斯古藤伯格 | 2023年1月30日 马里奥兄弟使用稳定扩散挖掘隧道。左图显示了未…...
开发属于自己的Spring Boot Starter-18
为什么要开发专用的Spring Boot Starter Spring在通常使用时,一般是通过pom.xml文件中引入相关的jar包,然后再通过application.yml文件配置初始化bean的配置,但随着项目越来越复杂或是项目组中的应用数量越来越多,可能会带来几个…...
C中Mysql的基本api接口
一、初始化参数返回值 二、链接服务器三、执行SQL语句注意事项 四、获取结果集4.1mysql_affected_rows和mysql_num_rows4.2mysql_store_result与mysql_free_result注意事项注意事项整体的工作流程 4.3mysql_use_result()4.4mysql_field_count(…...
grafana10.x报错 Failed to upgrade legacy queries Datasource x was not found
问题 grafana 从6.x升级到10.x后,导入json文件后报错,数据源x查询不到,grafana不显示数据; Templating Failed to upgrade legacy queries Datasource x was not found解决方法 可能grafana升级后数据源找不到,在面板…...
项目管理-案例重点知识(干系人管理)
项目管理:每天进步一点点~ 活到老,学到老 ヾ(◍∇◍)ノ゙ 何时学习都不晚,加油 四、干系人管理 案例重点知识 干系人管理 案例 重点内容: (1)权力利益方格、权力影响方格ÿ…...
微信小程序踩坑,skyline模式下,scroll-view下面的一级元素设置margin中的auto无效,具体数据有效
开发工具版本 基础库 开启skyline渲染调试 问题描述 skyline模式下,scroll-view下面的一级元素的margin写auto的值是没有效果的(二级元素margin写auto是有效果的),关闭这个模式就正常显示 演示效果图 父元素的宽度和高度效果(宽度是750rpx,宽度占满的) 一级元素宽度和css效果…...
jspXMl标记语言基础
1.打开命令框进入数据库 打开eclipse创建需要连接的项目 粘贴驱动程序 查看驱动器 使用sql的包 int代表个 conlm代表列名 <%page import"java.sql.ResultSet"%> <%page import"java.sql.Statement"%> <%page import"java.sql.Connect…...
【DevOps】Linux 与虚拟局域网 (VLAN) 详解
目录 一、什么是VLAN? 二、VLAN的工作原理 三、Linux中的VLAN支持 四、内核模块 五、用户空间工具 六、创建VLAN 七、配置VLAN 八、管理VLAN 九、VLAN的应用 1、 网络隔离 2、网络管理 3、网络扩展 十、VLAN的优点和限制 十一、结论 虚拟局域网&#…...
《表格新视界:从罗列到洞察的飞跃》
在信息爆炸的当下,表格宛如一位低调的英雄,默默支撑着无数的数据世界。 曾经,我们只把表格当作简单的记录工具,一行行、一列列地填着数字与文字。但如今,表格已华丽转身,成为了展现数据魅力的舞台。 它不…...
风电功率预测 | 基于GRU门控循环单元的风电功率预测(附matlab完整源码)
风电功率预测 风电功率预测 | 基于GRU门控循环单元的风电功率预测(附matlab完整源码)完整代码风电功率预测 | 基于GRU门控循环单元的风电功率预测(附matlab完整源码) 完整代码 clc; clear close allX = xlsread(风电场预测.xlsx)...
0基础安装 composer
解决: composer 不是内部或外部命令,也不是可运行的程序 或批处理文件。 php composer.phar可以运行 安装环境:系统w11 官网地址:Composer 1.安装composer 1.1打开命令行窗口 在命令行窗口里,右键是粘贴࿰…...
MYSQL-9.问题排查
问题排查的思路与方向 问题排查思路 分析问题:根据理论知识经验分析问题,判断问题可能出现的位置或可能引起问题的原因,将目标缩小到一定范围;排查问题:基于上一步的结果,从引发问题的“可疑性”角度出发…...
制造企业数据管理:从数据到价值的转化
在数字化浪潮席卷全球的今天,制造企业面临着前所未有的机遇与挑战。如何从海量的数据中提取有价值的信息,将其转化为企业的核心竞争力,成为了每一个制造企业必须面对的问题。而数据管理,正是实现这一转化的关键所在。制造企业数据…...
单例模式介绍
【一】为什么要单例模式 单例设计模式: 一个类只允许创建一个对象(或者实例),那这个类就是一个单例类,这种设计模式就叫作单例设计模式,简称单例模式。 当一个类的功能比较单一,只需要一个实例…...
Facebook企业户/在Facebook上做推广有什么好处?
想到出海,必会想到Facebook作为世界上最大的社交网络,Facebook拥有难以想象的用户数量,流量大到没朋友。近年来也是独立站卖家获取流量的有力工具之一。独立站卖家在Facebook上做广告的好处? Facebook,Google 开企业广…...
惠普tank2606,tank1005,屏幕显示ER 08,亮黄灯,加了碳粉问题依旧,遇到这个ER08报错别慌,更加别信维修店,维修店报价400块,这个软件2分钟修好,亲测完美修好,超级推荐。
下载:点这里下载 备用:https://pan.baidu.com/s/1jnWFzxqMMKBMDChJEfvBng?pwd0000 惠普tank2606,tank1005屏幕显示ER 08,亮黄灯,加了碳粉问题依旧,遇到这个ER08报错别慌,更加别信维修店,维修…...
S2-Pro智能代码助手:VSCode插件开发与Codex使用体验对比
S2-Pro智能代码助手:VSCode插件开发与Codex使用体验对比 1. 开篇:当代码补全遇上大模型 最近在VSCode插件开发中尝试了两款智能代码助手:基于S2-Pro大模型的自研插件和GitHub Copilot(底层采用Codex模型)。实际用下来…...
【2026 实测】10 分钟配好 OpenClaw 中转站:GPT、Claude、Gemini、DeepSeek 一键切换(小白可跟做)
你是不是也遇到过这些问题: 官方 API 偶发不稳定,任务跑到一半中断想切换模型时,要反复改配置、改 Key明明照着文档配了,结果还是 400/401 报错 如果你正在本地用 OpenClaw 做 AI 编程或多模型对比,这篇就是给你的。…...
实践证明:用需求四要素描述需求,AI编程返工率大幅下降
实践证明:用需求四要素描述需求,AI编程返工率大幅下降目标 边界 示例 验收 其中,边界 和 验收 最容易被低估,也最值得你花时间写清楚写在前面 你有没有遇到过这样的情况: 让 AI 写一个函数,结果它给你加…...
突破性QQ音乐加密文件解码工具:qmcdump让音乐自由播放的革新方案
突破性QQ音乐加密文件解码工具:qmcdump让音乐自由播放的革新方案 【免费下载链接】qmcdump 一个简单的QQ音乐解码(qmcflac/qmc0/qmc3 转 flac/mp3),仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump …...
AgentCPM深度研报助手使用技巧:三个参数让报告更专业
AgentCPM深度研报助手使用技巧:三个参数让报告更专业 1. 为什么你的AI研报总像“流水账”?问题可能出在参数上 你用过AI写报告,结果是不是这样:内容看起来都对,但读起来总觉得“差点意思”?结构松散像拼凑…...
weibo-rss:让微博内容主动找到你的高效订阅工具
weibo-rss:让微博内容主动找到你的高效订阅工具 【免费下载链接】weibo-rss 🍰 把喜欢的微博转为 RSS 订阅源 项目地址: https://gitcode.com/gh_mirrors/we/weibo-rss 在信息爆炸的时代,我们每天要处理大量碎片化内容。微博作为主流社…...
SkeyeVSS开发心得-VSS流播放与注意事项
本文是 VSS流播放详解 的配套开发笔记。 项目地址 https://github.com/openskeye/go-vss 1. 明确三个要点 POST /api/video/stream 只有一套 StreamResp 外壳,内里走哪路完全由 Device.AccessProtocol 决定。流媒体是否拉起来,不都是 StartRelyPull 的…...
10个HTTPie CLI高级功能实战技巧:从入门到精通API调试
10个HTTPie CLI高级功能实战技巧:从入门到精通API调试 【免费下载链接】cli 🥧 HTTPie CLI — modern, user-friendly command-line HTTP client for the API era. JSON support, colors, sessions, downloads, plugins & more. 项目地址: https:/…...
如何构建LaTeX-Workshop的自动化测试与持续集成流程:开发者完整指南
如何构建LaTeX-Workshop的自动化测试与持续集成流程:开发者完整指南 【免费下载链接】LaTeX-Workshop Boost LaTeX typesetting efficiency with preview, compile, autocomplete, colorize, and more. 项目地址: https://gitcode.com/gh_mirrors/la/LaTeX-Worksh…...
