You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 8 Stream:如何将PolicyDefinition的别名与名称合并为单列表?

优雅合并PolicyDefinition的别名与名称到单个列表

嗨,刚上手Java 8和Stream完全不用慌,这事儿用一条Stream语句就能搞定,核心就是用flatMap——它能帮你把每个对象拆成多个元素再合并成一个流,完美适配你的需求!

直接上代码:

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

// 假设你已经有PolicyDefinition集合List<PolicyDefinition> policyDefinitions
List<String> combinedAliasAndNames = policyDefinitions.stream()
    // 把每个PolicyDefinition转换成包含alias和name的Stream
    .flatMap(policyDef -> Stream.of(policyDef.getAlias(), policyDef.getName()))
    // 收集成最终的列表
    .collect(Collectors.toList());

简单解释下:

  • flatMap和map的区别在于,map是把一个元素转换成另一个元素,而flatMap是把一个元素转换成多个元素组成的流,然后会自动把所有这些小流合并成一个连续的流。
  • 这里我们用Stream.of()把每个PolicyDefinition的alias和name打包成一个包含两个元素的小流,flatMap会把所有这些小流“铺平”成一个大的字符串流,最后收集成List就搞定了。

如果担心alias或name可能返回null,还可以加个过滤步骤,避免列表里出现null值:

import java.util.Objects;

List<String> combinedAliasAndNames = policyDefinitions.stream()
    .flatMap(policyDef -> Stream.of(policyDef.getAlias(), policyDef.getName())
                                .filter(Objects::nonNull)) // 过滤掉null值
    .collect(Collectors.toList());

这样就完全不用分两条语句啦,一条搞定,既简洁又符合Stream的风格~

内容的提问来源于stack exchange,提问作者nadavgam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:29:56