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

Java中如何将3个List合并为表格形式的List?

合并多列String列表为表格形式数据的解决方案

需求:将分别对应数据表不同列的三个String类型列表,按行合并为表格形式的数据,存入allData列表(即每个列表的对应索引元素组成一行数据)。

基础实现(适配列表长度一致/不一致场景)

import java.util.LinkedList;
import java.util.List;

public class ListMergeExample {
    public static void main(String[] args) {
        List<String> allData = new LinkedList<>();
        List<String> list1 = new LinkedList<>();
        List<String> list2 = new LinkedList<>();
        List<String> list3 = new LinkedList<>();

        list1.add("1");
        list1.add("2");

        list2.add("3");
        list2.add("4");

        list3.add("5");
        list3.add("6");

        // 获取三个列表的最大长度,避免索引越界
        int maxRowCount = Math.max(Math.max(list1.size(), list2.size()), list3.size());

        for (int i = 0; i < maxRowCount; i++) {
            // 处理列表长度不一致的情况,缺省位置用空字符串填充(可自定义占位符)
            String col1 = i < list1.size() ? list1.get(i) : "";
            String col2 = i < list2.size() ? list2.get(i) : "";
            String col3 = i < list3.size() ? list3.get(i) : "";

            // 用分隔符拼接成一行数据,这里用逗号,可替换为制表符(\t)、竖线(|)等
            String rowData = String.join(",", col1, col2, col3);
            allData.add(rowData);
        }

        // 验证结果
        for (String row : allData) {
            System.out.println(row);
        }
    }
}

通用扩展(支持任意数量的列列表)

如果后续需要合并更多列列表,可使用以下通用写法,无需修改核心逻辑:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

public class GenericListMergeExample {
    public static void main(String[] args) {
        List<String> allData = new LinkedList<>();
        List<String> list1 = new LinkedList<>();
        List<String> list2 = new LinkedList<>();
        List<String> list3 = new LinkedList<>();

        list1.add("1");
        list1.add("2");

        list2.add("3");
        list2.add("4");

        list3.add("5");
        list3.add("6");

        // 将所有列列表存入集合
        List<List<String>> columnLists = Arrays.asList(list1, list2, list3);
        // 获取最大行数
        int maxRowCount = columnLists.stream().mapToInt(List::size).max().orElse(0);

        for (int i = 0; i < maxRowCount; i++) {
            List<String> rowElements = new ArrayList<>();
            for (List<String> column : columnLists) {
                rowElements.add(i < column.size() ? column.get(i) : "");
            }
            String rowData = String.join(",", rowElements);
            allData.add(rowData);
        }

        // 验证结果
        for (String row : allData) {
            System.out.println(row);
        }
    }
}

关键说明

  • 处理列表长度不一致:通过判断索引是否小于列表长度,避免IndexOutOfBoundsException,缺省值可根据业务需求替换为"N/A"等占位符
  • 分隔符选择:String.join()的分隔符可灵活调整,适配不同的表格数据格式需求
  • 通用写法优势:新增列列表时,只需将其加入columnLists集合即可,无需修改循环逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 18:55:29