首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将3个列表合并为像java中的表数据那样的列表

如何将3个列表合并为像java中的表数据那样的列表
EN

Stack Overflow用户
提问于 2022-09-24 14:21:11
回答 2查看 35关注 0票数 1

假设我有三个不同的字符串类型数据列表,这些数据是从一个表(不同的列)获取的。现在,我想把这三个列表像表数据一样添加到第三个列表中。请建议一下。

代码语言:javascript
运行
复制
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");
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-24 14:43:18

对每个文本进行迭代,并收集一个新的

代码语言:javascript
运行
复制
List<String> list1 = List.of("1", "2");
List<String> list2 = List.of("3", "4");
List<String> list3 = List.of("5", "6");
List<List<String>> allLists = List.of(list1, list2, list3);

List<List<String>> allData = new ArrayList<>();
for (int i = 0; i < list1.size(); i++) {
    List<String> tmp = new ArrayList<>();
    for (List<String> someList : allLists) {
        tmp.add(someList.get(i));
    }
    allData.add(tmp);
}

System.out.println(allData);
// [[1, 3, 5], [2, 4, 6]]
票数 1
EN

Stack Overflow用户

发布于 2022-09-24 14:55:16

假设所有列表都是相同大小的,则可以将任意数量的列表组合在使用Stream的相同索引下连接元素。

为此,您可以在索引上创建一个流,然后为每个索引创建一个与该索引对应的列表元素流。

使用Java16 toList()collect(Collectors.toList())将每个嵌套流收集到一个列表中,然后将所有列表收集到一个嵌套列表中。

下面是一个通用实现:

代码语言:javascript
运行
复制
@SafeVarargs
public static <T> List<List<T>> joinAllByIndex(List<T>... lists) {
    if (lists.length == 0) return Collections.emptyList();
    
    return IntStream.range(0, lists[0].size())
        .mapToObj(i -> Arrays.stream(lists)
            .map(list -> list.get(i))
            .toList())
        .toList(); // for Java 16+ or collect(Collectors.toList()) for earlier versions
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73837939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档