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

Java三层嵌套Stream调用flatMap获取字符串集合的代码优化咨询

优化方案

你原来的写法冗余点在于提前做了多次嵌套集合收集,后续再统一展开,直接在流处理环节用flatMap替换内层的map即可省去中间收集、再反复展开的逻辑,优化后代码如下:

import static java.util.stream.Collectors.toSet;

// 核心逻辑
Set<List<String>> results = countries.stream()
    .flatMap(country -> titles.stream()
        .flatMap(title -> games.stream()
            .map(game -> Arrays.asList(game, country + "_" + title + "_" + game))))
    .collect(toSet());

逻辑说明

  • 优化后的写法和你给出的三层for循环逻辑完全等价,省去了原代码中3次collect(toList())生成中间嵌套集合、后续3次flatMap展开的冗余操作,代码更简洁的同时也减少了不必要的对象生成开销。
  • 每层flatMap的作用是直接将内层流输出的元素合并到上层流中,不需要先把内层流的元素收集为列表再做展开。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:27:01