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

如何用Java Stream实现泛型方法打印嵌套列表所有元素

解决嵌套List的递归遍历打印问题

问题分析

你当前的实现只会打印List的顶层元素,遇到嵌套子List时会直接输出整个List实例(比如[2, 3, 4, [5]]),而不会展开内部元素。要实现统一输出所有底层数值,需要通过递归遍历处理嵌套结构。

解决方案

编写一个支持递归的泛型方法,对每个元素做类型判断:如果是List类型,就递归调用自身处理这个子List;否则直接打印元素。

完整可运行代码

import java.util.List;

public class NestedListPrinter {
    public static void main(String[] args) {
        List<Object> list1 = List.of(1, List.of(2, 3, 4, List.of(5)), List.of(6, 7));
        printNestedList(list1);
        System.out.println();
  
        List<Integer> list2 = List.of(1, 2, 3, 4, 5, 6, 7, 8);
        printNestedList(list2);
        System.out.println();
        // 两次调用均输出:1 2 3 4 5 6 7 8
    }

    public static void printNestedList(List<?> list) {
        for (Object element : list) {
            if (element instanceof List<?>) {
                // 递归处理嵌套的子List
                printNestedList((List<?>) element);
            } else {
                // 可根据需求修改分隔符,比如改为逗号+空格:element + ", "
                System.out.print(element + " ");
            }
        }
    }
}

代码说明

  • 递归逻辑:通过instanceof List<?>判断元素类型,遇到子List就递归拆解,直到遍历到最底层的非List元素。
  • 泛型兼容:使用List<?>作为参数,能接收任意类型的List(包括普通List<Integer>和嵌套的List<Object>)。
  • 输出自定义:示例用空格分隔元素,你可以修改System.out.print的内容,调整为逗号分隔或其他格式。

扩展优化(可选)

如果需要先收集所有底层元素再处理(而非直接打印),可以写一个返回扁平化List的递归方法:

import java.util.ArrayList;
import java.util.List;

public class NestedListFlattener {
    public static List<Object> flattenNestedList(List<?> list) {
        List<Object> result = new ArrayList<>();
        for (Object element : list) {
            if (element instanceof List<?>) {
                result.addAll(flattenNestedList((List<?>) element));
            } else {
                result.add(element);
            }
        }
        return result;
    }
}

调用示例:

List<Object> flattenedList = flattenNestedList(list1);
flattenedList.forEach(e -> System.out.print(e + " "));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 05:45:35