如何将List<String[]>类型转换为List<List<String>>嵌套列表?
实现方案
针对将List<String[]>转换为List<List<String>>的需求,以下是几种实用的实现方式:
1. 基础循环遍历转换
这是最直观的实现方式,手动遍历数组并完成类型转换:
List<String[]> allData = csv.readAll(); List<List<String>> convertedList = new ArrayList<>(); for (String[] row : allData) { // 用ArrayList包装Arrays.asList的结果,获得可修改的List;若无需修改,可直接用Arrays.asList(row) convertedList.add(new ArrayList<>(Arrays.asList(row))); }
注意:Arrays.asList()返回的是基于原数组的固定大小视图,不支持添加、删除操作,若需要可修改的List,必须用new ArrayList<>()进行包装。
2. Java 8+ Stream API 简洁实现
借助Stream的map操作批量转换,代码更简洁高效:
List<String[]> allData = csv.readAll(); List<List<String>> convertedList = allData.stream() .map(ArrayList::new) // 等价于 row -> new ArrayList<>(Arrays.asList(row)) .collect(Collectors.toList());
如果不需要可修改的List,也可以直接使用Arrays::asList:
List<List<String>> convertedList = allData.stream() .map(Arrays::asList) .collect(Collectors.toList());
3. 使用Guava工具库(可选)
如果项目已引入Guava库,可借助现成工具方法简化代码:
import com.google.common.collect.Lists; List<String[]> allData = csv.readAll(); List<List<String>> convertedList = Lists.transform(allData, Arrays::asList);
注意:Lists.transform返回的是懒加载的视图,若需要立即生成独立的List,可再包装一层new ArrayList<>(...)。
内容的提问来源于stack exchange,提问作者Ayon Moitra
相关产品推荐
相关产品推荐

