news 2026/7/14 20:44:08

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/7/14 12:14:26

支持Markdown、Word、Excel的AI助手来了!

支持Markdown、Word、Excel的AI助手来了&#xff01; 在企业知识管理日益复杂的今天&#xff0c;一个令人头疼的问题始终存在&#xff1a;重要的项目文档散落在各个员工的电脑里&#xff0c;新同事入职要花几周时间翻找资料&#xff0c;而当有人问“去年Q3的营销预算是多少&…

作者头像 李华
网站建设 2026/7/6 22:17:38

机顶盒固件下载官网操作全解析:新手必看刷机流程

机顶盒刷机不求人&#xff1a;从官网下载固件到安全升级的完整实战指南 你有没有遇到过这样的情况&#xff1f;家里的机顶盒越用越卡&#xff0c;打开一个视频要等好几秒&#xff1b;或者买了新的路由器却发现Wi-Fi总是断连&#xff1b;甚至想看4K HDR电影&#xff0c;系统却提…

作者头像 李华
网站建设 2026/7/1 14:01:22

OpenCVSharp:Photo模块的使用

概述这个例子介绍OpenCV中Photo模块的各种图像处理方法&#xff0c;主要用于图像美化和艺术效果处理。主要包括边缘保持滤波、细节增强、铅笔画效果与风格化。效果&#xff1a;实践先来看下边缘保持滤波的这两个&#xff1a;// 边缘保持滤波 - NormconvFilter using var normco…

作者头像 李华
网站建设 2026/7/12 23:16:12

零基础也能学会:小白入门anything-llm图文教程

零基础也能学会&#xff1a;小白入门 Anything-LLM 图文教程 在信息爆炸的时代&#xff0c;我们每天都在面对堆积如山的文档——合同、报告、技术手册、会议纪要……想找点内容&#xff0c;翻来覆去却总找不到。而大模型虽然能“聊天”&#xff0c;但一问具体文件里的事&#…

作者头像 李华
网站建设 2026/7/11 18:55:30

基于Python+大数据+SSM基于深度学习的旅游推荐系统(源码+LW+调试文档+讲解等)/旅游推荐平台/旅行推荐系统/旅游攻略推荐/旅游目的地推荐系统/智能旅游推荐/个性化旅游推荐

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

作者头像 李华