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
相关产品推荐
相关产品推荐

