news 2026/9/23 6:46:18

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/9/20 17:09:48

包装设计落地实录:我们如何系统优化流程并验证3大核心成果

行业趋势解读 包装设计落地实录&#xff1a;我们如何系统优化流程并验证3大核心成果引言 在消费升级与环保法规双重驱动下&#xff0c;包装设计已从单一的功能性载体演变为品牌战略的核心触点。据2024年一项行业调研显示&#xff0c;超过65%的消费者会因包装设计质感改变购买决…

作者头像 李华
网站建设 2026/9/20 10:31:41

LDO设计原理详解:超详细版电源管理芯片分析

LDO设计原理详解&#xff1a;从零构建高性能电源管理芯片的认知体系你有没有遇到过这样的情况&#xff1f;系统里某个ADC的采样结果总是“飘”&#xff0c;噪声大得离谱&#xff0c;排查半天才发现是给它供电的LDO没选对&#xff1b;或者电池续航怎么都优化不上去&#xff0c;最…

作者头像 李华
网站建设 2026/9/20 11:11:23

将企业Wiki接入AI:通过anything-llm实现语义化查询

将企业Wiki接入AI&#xff1a;通过anything-llm实现语义化查询 在一家中型科技公司&#xff0c;新入职的开发工程师小李第一天上班就被安排对接一个核心API服务。他打开公司Confluence Wiki&#xff0c;搜索“鉴权流程”&#xff0c;跳出了27个标题含“auth”的页面——从设计…

作者头像 李华
网站建设 2026/9/21 22:43:11

基于Python+大数据+SSM基于深度学习的淘宝用户购物可视化与行为预测系统(源码+LW+调试文档+讲解等)/淘宝用户分析系统/购物行为预测系统/用户购物可视化系统/电商用户行为预测

博主介绍 &#x1f497;博主介绍&#xff1a;✌全栈领域优质创作者&#xff0c;专注于Java、小程序、Python技术领域和计算机毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅&#x1f447;&#x1f3fb; 2025-2026年最新1000个热门Java毕业设计选题…

作者头像 李华
网站建设 2026/9/20 17:22:47

如何用anything-llm实现文档智能检索与对话交互?

如何用 Anything-LLM 实现文档智能检索与对话交互&#xff1f; 在企业知识库动辄上千份PDF、Word和Excel文件的今天&#xff0c;如何快速找到“那份说过但记不清在哪”的关键信息&#xff1f;传统搜索依赖关键词匹配&#xff0c;面对模糊提问常常束手无策&#xff1b;而通用大模…

作者头像 李华
网站建设 2026/9/22 11:03:01

System76发布Pop!_OS 24.04 LTS版搭载全新Rust构建的桌面环境

经过长时间的开发&#xff0c;第一个完全基于Rust构建的桌面环境1.0版本终于发布&#xff0c;整体表现令人印象深刻。上周末&#xff0c;System76正式发布了其内部开发的Ubuntu衍生版本的长期支持版本&#xff0c;同时推出了完全用Rust重新实现的内部桌面环境COSMIC的"Epo…

作者头像 李华