news 2026/5/1 10:56:55

java list=null,可以stream吗

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
java list=null,可以stream吗

不可以直接对null列表进行 Stream 操作,会抛出NullPointerException

解决方案:

1.使用 Optional 包装(推荐)

List<String> list = null; List<String> result = Optional.ofNullable(list) .orElse(Collections.emptyList()) .stream() .map(String::toUpperCase) .collect(Collectors.toList());

2.使用 Collections.emptyList() 替代 null

List<String> list = null; List<String> result = (list == null ? Collections.emptyList() : list) .stream() .filter(Objects::nonNull) .collect(Collectors.toList());

3.Java 9+ 的 Stream.ofNullable(单个元素)

// 注意:这是针对单个元素,不是整个列表 Stream<String> stream = Stream.ofNullable(list) .flatMap(List::stream);

4.自定义工具方法

public static <T> Stream<T> safeStream(List<T> list) { return list == null ? Stream.empty() : list.stream(); } // 使用 List<String> result = safeStream(list) .map(String::toLowerCase) .collect(Collectors.toList());

5.使用第三方库

// Apache Commons Collections List<String> result = CollectionUtils.emptyIfNull(list) .stream() .collect(Collectors.toList());

最佳实践建议:

  1. 避免返回 null 列表,尽量返回空集合:

// 推荐 public List<String> getList() { return Collections.emptyList(); // 不是 null } // 不推荐 public List<String> getList() { return null; }
  1. 使用 @NonNull 注解(如 Lombok 或 javax.annotation)

  2. 在方法内部处理空值,确保调用方不需要处理 null

示例:安全处理

List<String> processList(List<String> input) { return Optional.ofNullable(input) .orElseGet(Collections::emptyList) .stream() .filter(Objects::nonNull) .map(String::trim) .filter(s -> !s.isEmpty()) .collect(Collectors.toList()); }

核心原则:在调用stream()之前,确保列表不为 null。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 6:01:13

三脚电感高频特性分析及电路适配建议

三脚电感的高频“真面目”&#xff1a;不只是多一个引脚那么简单在高速数字电路、高效电源和射频前端中&#xff0c;电感从来不是个配角。而当你看到一颗只有1608封装大小、却有三个引脚的磁性元件时&#xff0c;别以为它只是普通功率电感的“兄弟款”。这颗看似不起眼的小器件…

作者头像 李华
网站建设 2026/5/1 6:15:18

剪映合集下载

链接&#xff1a;https://pan.quark.cn/s/081b4e0285c9

作者头像 李华
网站建设 2026/5/1 6:15:13

C#哈希表遍历技巧全解析以及栈 堆 队列的认识

hash表以及遍历方法//数组结构:长度是固定 类型是固定 int[] is1 { 1, 2, 3 };//动态集合&#xff1a;长度不固定&#xff0c;类型不固定&#xff0c;存储是object类型 ArrayList list new ArrayList();//泛型集合&#xff1a;长度不固定&#xff0c;类型固定 List<int>…

作者头像 李华
网站建设 2026/5/1 10:02:55

Xapian: 一款C++全文检索解决方案

目录 1.简介 2.安装与集成 2.1.vcpkg 一键安装&#xff08;推荐&#xff0c;自动解决依赖&#xff09; 2.2.源码编译&#xff08;适合定制化 / 无网络环境&#xff09; 2.3.工程集成&#xff1a;CMake 配置&#xff08;直接复用&#xff09; 3.核心功能实战 3.1.创建索引…

作者头像 李华
网站建设 2026/5/1 7:30:31

[架构之路-277]:架构活动不同阶段目标和决策的挑战不同,需要不同的思维模式:想法形成阶段需要全方位思维,又称系统思维;架构规划阶段需要批判性性思维;实时阶段需要实用性思维;复盘阶段需要分析性思维;

&#x1f9e0; 架构活动四阶段思维模式模型——根据目标与挑战动态切换认知方式核心理念&#xff1a; 架构不是一成不变的设计成果&#xff0c;而是一个随项目演进而不断调适的认知过程。 优秀的架构师不仅要掌握技术&#xff0c;更要能在不同阶段启用适配性的思维模式&#xf…

作者头像 李华
网站建设 2026/5/1 7:28:29

中小企业必备:低成本搭建智能客服系统的秘诀

中小企业如何用一台普通电脑搭建安全可控的智能客服系统&#xff1f; 在客户咨询量日益增长的今天&#xff0c;许多中小企业正面临一个两难困境&#xff1a;一边是不断攀升的人力成本&#xff0c;一边是用户对响应速度和专业度越来越高的期待。传统的客服模式依赖人工轮班、反…

作者头像 李华