news 2026/4/18 7:25:23

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/4/18 8:03:23

Microsoft Agent Framework - 顺序执行 Workflow

在构建复杂的人工智能应用时&#xff0c;我们常常需要将一个大任务拆解成多个小步骤&#xff0c;并让不同的 AI Agent 按顺序依次处理。Microsoft Agent Framework 提供了一个强大而灵活的工具——Workflow&#xff0c;来帮助我们轻松编排和管理这些 Agent 的协作流程。今天&am…

作者头像 李华
网站建设 2026/4/15 14:23:04

anything-llm深度测评:简洁全能的LLM应用管理器体验

anything-llm深度测评&#xff1a;简洁全能的LLM应用管理器体验 在企业知识库越积越厚、员工查找政策文件却仍靠“问老同事”的今天&#xff0c;AI是否真能成为那个“永远在线、从不嫌烦”的内部顾问&#xff1f;一个PDF文档动辄上百页&#xff0c;传统搜索引擎只能匹配关键词&…

作者头像 李华
网站建设 2026/4/15 15:58:27

组合逻辑电路设计原理:一文说清基本结构

组合逻辑电路设计&#xff1a;从门电路到通用逻辑的完整路径你有没有想过&#xff0c;当按下键盘上的一个键时&#xff0c;计算机是如何在几纳秒内识别出是哪个字符的&#xff1f;或者&#xff0c;CPU里的加法器为什么能瞬间完成两个数的相加&#xff1f;这些看似简单的操作背后…

作者头像 李华
网站建设 2026/4/16 14:00:24

【算法题】二分

二分查找是高效解决有序/局部有序数组问题的经典算法&#xff0c;核心思想是通过不断缩小“可能包含目标的区间”&#xff0c;将时间复杂度从暴力遍历的 O(n)O(n)O(n) 优化到 O(log⁡n)O(\log n)O(logn)。 它的适用场景非常广泛&#xff1a;不仅能解决“查找目标值”这类基础问…

作者头像 李华
网站建设 2026/4/16 10:59:51

至顶AI实验室硬核评测:本地部署Step-Audio 2 mini

阶跃星辰重磅开源了Step-Audio 2 Mini&#xff0c;这个消息一出就在开发者圈子里炸开了锅。作为一个技术测评博主&#xff0c;我当然要第一时间上手体验一番。经过几天的折腾&#xff0c;从下载、部署到压力测试&#xff0c;这个号称"最强开源语音模型"到底表现如何?…

作者头像 李华