当前位置: 首页 > news >正文

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。

http://www.jsqmd.com/news/131029/

相关文章:

  • omnet++ distributions
  • Kgateway 实战指南:轻量级 Kubernetes 流量管理与生产落地
  • 基于多波束技术的卫星通信系统matlab性能仿真
  • [WC2025] 猫粮
  • 2025中国电缆一线品牌推荐:十大品牌榜单,缆标杆品牌盘点(12月更新) - 品牌2026
  • 2025年特种控制电缆生产厂家推荐:涵计算机、太阳能光伏、绝缘电力、屏蔽电缆生产厂家名单(12月新版) - 品牌2026
  • event-emitter 库还推荐使用吗,有没有替代的
  • 一次改变自己的破圈尝试 - zyyy
  • 2025年知名的电缆生产厂家推荐:电缆生产厂家排名TOP榜单盘点(12月更新) - 品牌2026
  • 基于数字孪生的产线优化:完整指南
  • iPhone 18系列明年Q1试产:首发A20系列芯片
  • 安全采集jvm
  • LDAP/OAuth2支持情况:anything-llm企业认证方式
  • 高速信号完整性优化的pcb布线规则设计:深度剖析
  • 2025年12月优质电力电缆生产厂家推荐:中低、低压、中压、变频电缆厂家精选 - 品牌2026
  • day43打卡
  • 支持Ollama本地模型服务:anything-llm无缝对接方案
  • HTTPS加密通信配置:保障anything-llm传输安全
  • AI大模型排行网址、各大AI平台网址
  • 开源AI应用推荐:anything-llm让知识管理更简单
  • 基于RAG的企业搜索革命:anything-llm应用场景解析
  • 为什么开发者都在关注anything-llm?一文讲清楚
  • 什么是 ACPI Bridge Device
  • 基于单片机的多路温湿度采集与WIFI智能报警控制系统设计
  • 支持语音输入吗?探索anything-llm的多媒体潜力
  • 基于单片机的智能家居智能雨水自动关窗控制系统设计
  • 如何用anything-llm实现文档智能检索与对话交互?
  • 【算法题】二分
  • Pinecone vs Chroma vs Weaviate:与anything-llm集成测试
  • TTNRBO-VMD改进牛顿-拉夫逊优化算法的变分模态分解研究——基于分解层数K与惩罚因子α的参数优化(Matlab代码实现)