二维数组转嵌套list需保留行列结构,不可用arrays.aslist(),应遍历行并逐行转为list后添加到外层list。

- >`)的相互转换,核心在于**结构映射是否保留二维语义**。扁平化转成 `List
- 外层遍历数组行:
for (int i = 0; i - 每行新建一个内层 List:
List<t> rowList = new ArrayList();</t> - 内层遍历该行元素,逐个添加:
rowList.add(arr[i][j]); - 将
rowList加入外层 List:result.add(rowList); - 初始化空
List<t></t> - 双重 for 循环或增强 for 嵌套遍历每个元素
- 逐个
add() - 先确定行数:
list.size() - 若每行长度一致,取
list.get(0).size()作为列数;否则需动态处理(如取最大长度,空位补 null) - 创建数组:
T[][] arr = new T[rows][cols];(注意:泛型数组受限,常改用Object[][]再强转,或用具体类型如String[][]) - 双层循环赋值:
arr[i][j] = list.get(i).get(j); - 二维数组 → JSON 字符串 →
List<list>></list>(需配合 TypeReference) - 优点:代码极简,适合配置、调试、前后端传输
- 缺点:依赖第三方库;null 元素或特殊类型可能丢失;性能低于手写循环
- >` 是另一种。关键看业务场景——比如表格数据、矩阵运算、Excel 解析,通常需保留嵌套结构。
二维数组 → List>(保留结构)
这是最常见也最易出错的转换。不能直接用 Arrays.asList(),因为它对二维数组只做一层包装,结果是 List<string></string>,不是 List<list>></list>。
推荐写法(通用、清晰、可读性强):
示例(String[][] → List>):
- > result = new ArrayList();
for (String[] row : arr) {
List
result.add(listRow);
}
二维数组 → List(扁平化)
适合导出全部值、批量校验、简单聚合等场景。逻辑就是“按行优先顺序”拉直所有元素。
Java 8 可用 Stream 简化(但注意性能敏感场景慎用):
List.flatMap(Arrays::stream)
.collect(Collectors.toList());
List> → 二维数组
无法一步到位,必须显式指定目标数组维度。常用做法:
⚠️ 注意:Java 不允许直接创建泛型数组(如 new List<string>[10]</string>),所以 List<list>></list> 转 String[][] 是安全的,但转 List<string>[][]</string> 会编译报错。
工具类与 JSON 方案(快速但有约束)
如果项目已引入 Fastjson 或 Jackson,可用序列化中转:
例如 Fastjson:
List- > list = JSON.parseObject(
JSON.toJSONString(array2D),
new TypeReference
- >>() {});











