如何使用Java Stream获取客户关联的指定数量姓名?
实现代码
直接修改方法逻辑如下,完全兼容Java 8语法:
import java.util.Collections; import java.util.List; import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; private List<String> getNames(Customer customer) { return Optional.ofNullable(customer.getNames()) // 空列表兜底,避免空指针异常 .orElse(Collections.emptyList()) .stream() // 提取每个NameResponse的name属性 .map(NameResponse::getName) // 可选步骤:过滤掉为null的姓名,不需要可以删除 .filter(Objects::nonNull) // 限制最多返回20个姓名,匹配需求 .limit(20) .collect(Collectors.toList()); }
补充说明
- 你原代码里用到的
List.of()是Java 9才引入的方法,Java 8环境下如果需要返回固定单元素列表,可以用Collections.singletonList()替代。 - 代码里加了空指针防护逻辑,就算
customer.getNames()返回null也不会报错,稳定性更好。
内容的提问来源于stack exchange,提问作者IveGotCodeButImNotACoder
相关产品推荐
相关产品推荐

