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

如何用Java 8 Stream API打印List<List<String>>中的值?Java 8支持嵌套流吗?

Java 8 Stream 处理 List<List> 指南

一、打印集合中的所有值

针对List<List<String>>类型的嵌套集合,有两种常见的Stream处理方式来打印内部值:

1. 扁平化后打印(忽略层级)

使用flatMap()方法将嵌套的List<String>逐个转换为Stream,再合并成一个全局Stream,之后直接遍历打印:

import java.util.Arrays;
import java.util.List;

public class NestedListDemo {
    public static void main(String[] args) {
        List<List<String>> nestedList = Arrays.asList(
            Arrays.asList("apple", "banana"),
            Arrays.asList("cherry", "date", "elderberry")
        );

        // 扁平化流并打印每个元素
        nestedList.stream()
                  .flatMap(List::stream)
                  .forEach(System.out::println);
    }
}

输出结果:

apple
banana
cherry
date
elderberry

2. 保留层级的嵌套打印

如果需要区分不同内部列表的元素,可以在外部流的forEach()中再次创建内部流,实现嵌套遍历:

// 保留层级的打印方式
nestedList.stream()
          .forEach(innerList -> {
              System.out.println("新列表开始:");
              innerList.stream().forEach(item -> System.out.println("  " + item));
          });

输出结果:

新列表开始:
  apple
  banana
新列表开始:
  cherry
  date
  elderberry

二、Java 8 中的嵌套流特性

Java 8完全支持嵌套流特性。所谓嵌套流,就是在流的处理流程中,对每个元素(这里是List<String>类型的元素)再次创建并操作一个子流,本质是流的嵌套使用。

上面的两种打印方式都是嵌套流的典型应用:

  • 第一种通过flatMap()将嵌套流"扁平化"为单一流,是嵌套流的简化处理;
  • 第二种直接在外部流的操作中启动内部流,是更直观的嵌套流使用场景。

除了打印,你还可以基于嵌套流做更多操作,比如过滤内部列表的元素、转换元素类型、统计嵌套集合的元素总数等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 17:52:10