合并两个可能为空的List 的方法记录

在日常开发中,我们经常需要将两个列表(List)合并成一个新的列表。这个任务看似简单,但如果其中一个或两个列表可能为 null,处理起来就需要注意一些细节。本文将介绍一种使用 Java 8 Stream API 的简洁方法来完成这一任务。

User 类定义

首先,我们需要一个 User 类,用于存储用户的基本信息:

public class User {private String name;private int age;public User(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "User{name='" + name + "', age=" + age + "}";}// Getters and setters can be added here if needed
}

合并列表的方法

我们使用 Java 8 的 Stream API 来合并两个可能为空的列表。这种方法非常简洁且易读。

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;public class Main {public static void main(String[] args) {List<User> list1 = new ArrayList<>();list1.add(new User("Alice", 30));list1.add(new User("Bob", 25));List<User> list2 = null;List<User> mergedList = Stream.of(list1, list2).filter(list -> list != null).flatMap(List::stream).collect(Collectors.toList());System.out.println(mergedList);}
}

代码解析

  1. 创建两个列表: 我们首先创建了两个 List<User> 对象,list1 包含了一些用户数据,list2null

    List<User> list1 = new ArrayList<>();
    list1.add(new User("Alice", 30));
    list1.add(new User("Bob", 25));List<User> list2 = null;
    
  2. 使用 Stream.of() 创建一个包含两个列表的流: Stream.of(list1, list2) 将两个列表作为流的元素。

    Stream.of(list1, list2)
    
  3. 过滤 null 值: filter(list -> list != null) 过滤掉 null 的列表。

    .filter(list -> list != null)
    
  4. 平铺流: flatMap(List::stream) 将每个列表中的元素平铺到一个统一的流中。

    .flatMap(List::stream)
    
  5. 收集结果: collect(Collectors.toList()) 将流中的元素收集到一个新的 List<User> 中。

    .collect(Collectors.toList());
    

运行结果

上述代码运行后,将输出合并后的列表:

[User{name='Alice', age=30}, User{name='Bob', age=25}]

总结

使用 Java 8 的 Stream API 可以简洁且高效地合并两个可能为 null 的列表。通过 Stream.of()filter()flatMap(),我们可以轻松地处理 null 值并将列表合并到一个新的列表中。这种方法不仅代码简洁,还提高了可读性,非常适合在实际开发中使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/31474.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【APP移动端性能测试】第三节.性能测试工具GT和常见的性能测试点(上)

文章目录 前言一、性能测试工具GT 1.1 性能测试工具GT的基本介绍 1.2 性能测试工具GT的基本使用二、CPU性能测试 2.1 CPU说明 2.2 CPU测试步骤 2.3 监控结果保存到目录文件三、内存性能测试 3.1 内存知识点介绍 3.2 常见的内存问题和现象 …

docker将容器打包提交为镜像,再打包成tar包

将容器打包成镜像可以通过以下步骤来实现。这里以 Docker 为例&#xff0c;假设你已经安装了 Docker 并且有一个正在运行的容器。 1. 找到正在运行的容器 首先&#xff0c;你需要找到你想要打包成镜像的容器的 ID 或者名字。可以使用以下命令查看所有正在运行的容器&#xff…

【0-1系列】从0-1快速了解搜索引擎是什么以及怎么用(上)

友情链接 社区开发版安装部署与使用教程社区版家族V2024.5版本更新说明 START>>1.快速了解搜索引擎 什么是搜索引擎数据库 搜索引擎数据库是一类专门用于数据内容搜索的NoSQL数据库&#xff0c;是非结构化大数据处理分析领域中重要的基础支撑软件。 伴随互联网、移动…

DSP应用市场的大蛋糕,国产厂商能吃下多少?

DSP是数字信号处理器&#xff08;Digital Signal Processor&#xff09;的简称&#xff0c;是一种专门用于高速数学运算的微处理器。DSP能够快速且准确地处理数字信号&#xff0c;同时具备可编程和低功耗等特点&#xff0c;如今在各个领域发挥着越来越重要的作用。 &#xff08…

【目标检测】图解 DETR 系统框图

简略版本 Backbone&#xff1a;CNN backbone 学习图像的 2D 特征Positional Encoding&#xff1a;将 2D 特征展平&#xff0c;并对其使用位置编码&#xff08;positional encoding&#xff09;Encoder&#xff1a;经过 Transformer 的 encoderDecoder&#xff1a;encoder 的输出…

spring-gateway配置说明

在开发过程中遇到的一些配置问题&#xff0c;记录下来以供参考 spring-gateway版本是2.2.9-release,使用的spring cloud dependence 是 Hoxton.SR12 在依赖eureka 服务发现并自动将发现服务器加入到router中的时候&#xff0c;需要指定对应的服务进行添加&#xff0c;根据文档…

技术分享 | 基于 API 解析的 Python 爬虫

最近各大高校纷纷翻拍 Coincidence 抖肩舞&#xff0c;需要对这种流行现象进行数据分析。数据分析首先需要有数据&#xff0c;本文介绍了爬取 B 站相应视频的评论、弹幕、播放量、点赞数等数据的方法。爬虫有多种实现方法&#xff0c;大型的网络爬虫多基于成熟的爬虫框架&#…

vue 登录

1.创建项目 Set-ExecutionPolicy RemoteSigned npm install -g yarn yarn add axios yarn add element-pluspackage.json {"name": "tom6","version": "0.1.0","private": true,"scripts": {"serve": &…

域内攻击手法——域内用户枚举和密码喷洒

一、域内用户枚举 1、域内用户枚举原理 域内用户枚举可以在无域内有效凭据的情况下&#xff0c;枚举出域内存在的用户名&#xff0c;并对其进行密码喷洒攻击&#xff0c;以此获得域内的有效凭据&#xff0c;在 Kerberos 协议认证的 AS-REQ 阶段&#xff0c;客户端向 AS 发送的…

交易中的特殊存在

在交易的广袤天空中&#xff0c;有一群特殊的存在——他们&#xff0c;是Eagle Trader。 他们以鹰眼般的洞察力&#xff0c;捕捉市场的微妙变化&#xff0c;每一次决策都如同猎食者般精准&#xff1b;他们运用策略&#xff0c;如同雄鹰在风中翱翔&#xff0c;利用风向&#xf…

索尼MXF文件断电变2G恢复方法(PXW-Z280V)

PXM-Z280V算是索尼比较经典的机型&#xff0c;也是使用MXF文件格式的机型之一。近期接到很多例索尼MXF量突然不正常的案例&#xff08;如变成512字节或者2G&#xff09;&#xff0c;下面来看下这个案例。 故障存储: 128G存储卡 /文件系统&#xff1a;exFAT 故障现象: 客户反…

Android中的多线程与线程池详解

Android中的多线程与线程池详解 一、技术难点 在Android开发中&#xff0c;多线程和线程池是处理复杂任务、提高应用性能和响应性的关键技术。然而&#xff0c;这些技术也带来了一些技术难点。 1. 多线程技术难点 线程同步&#xff1a;多线程环境下&#xff0c;数据访问的同…

vue3兄弟组件通信之第三方库/插件-mitt工具

简介&#xff1a;官方已经移除了eventBus作为兄弟组件通信的方案&#xff0c;推荐使用第三方库mitt工具 一&#xff0c;安装mitt npm install --save mitt二&#xff0c;按需引入 在src目录下&#xff0c;新建utils文件夹&#xff0c;在其新建bus.js或bus.ts文件 // bus.js文…

Centos MySQL 源码安装(5.6)

mysql-boost-8.0.31.tar.gz 源码下载 下载地址:https://dev.mysql.com 源码安装要求 cmake、Boost C++库、ncurses库、OpenSSL库 //需要cmake3,gcc-5.3以上 源码搭建 mysql 环境 编辑scl.repo文件 cd /etc/yum.repos.d vi scl.repo //scl.repo文件内容如下:[scl] n…

兴业严选|朝阳、大兴、丰台、等5.9折起总有一套适合你~

近日于上海&#xff0c;出现了一桩令人始料未及之事。一套地处浦东、面积达 245.7 平方米的住宅进行挂网拍卖。 出乎意料的是&#xff0c;此套房子受到众多买家的青睐&#xff0c;历经一番激烈的竞价竞争&#xff0c;最终以 1766 万元的价格成交&#xff0c;折合每平方米 7187…

AVL许可证更新

随着科技的飞速发展&#xff0c;软件已成为企业运营不可或缺的部分。然而&#xff0c;软件许可证的更新和管理成为了企业面临的重要挑战。AVL许可证更新作为企业软件管理的关键环节&#xff0c;正逐渐受到企业的关注。本文将深入探讨AVL许可证更新的重要性、最佳实践以及如何实…

通俗范畴论3 从特指对象到对象

同一性问题 如前所述&#xff0c;特指对象有个名字&#xff0c;并用一个点表示&#xff08;相当于另一个名字&#xff09;&#xff0c;它可以作为箭头的起点或终点&#xff0c;箭头的多少&#xff0c;以及箭头的起点和终点根据表达的需要而定&#xff0c;没有特别的约定。因此…

玄机平台流量特征分析-蚁剑流量分析

前言 蚁剑的流量特征 (1)每个请求体都存在ini_set(“display_errors”, “0”);set_time_limit(0)开头。并且后面存在base64等字符 (2)响应包的结果返回格式为&#xff1a; 随机数 响应内容 随机数 看一下题目要求 步骤1.1 这里要求我们找到木马的连接密码&#xff0c;…

智能猫砂盆效果这么惊艳吗?绝对不踩雷的智能猫砂盆合集来啦

身为一个铲屎官&#xff0c;我深受“天天铲屎”的困扰。想要片刻放松都不行&#xff0c;因为猫砂盆一旦堆积屎尿&#xff0c;尤其在夏天&#xff0c;会迅速发臭&#xff0c;滋生细菌。对猫而言&#xff0c;不清理猫砂盆会让它们感到不适&#xff0c;可能引发疾病或拒绝使用猫砂…

如何在Ubuntu上安装WordPress

如何在Ubuntu上安装WordPress 执行系统更新 apt update && apt upgrade第一步 安装 Apache apt install apache2确认 Apache 安装是否成功. systemctl status apache2安装成功后 打开浏览器输入 http://server-ip-address 第二步 安装 MySQL apt install mariad…