首页 > 解决方案 > 如何从列表列表中提取列表

问题描述

我有以下列表:

    List<List<Integer>> fronts = new ArrayList<>();
    List<Integer> f0 = new ArrayList<>();
    f0.add(0);
    f0.add(1);
    f0.add(2);
    f0.add(3);
    fronts.add(f0);

    List<Integer> f1 = new ArrayList<>();
    f1.add(6);
    f1.add(7);
    f1.add(8);
    f1.add(9);
    fronts.add(f1);

    List<Integer> f2 = new ArrayList<>();
    f2.add(10);
    f2.add(11);
    f2.add(12);
    f2.add(13);
    fronts.add(f2);

我想得到四个列表,其中第一个列表包含每个列表的第一个元素,0,6,10第二个列表是1,7,11等等。

我怎样才能做到这一点?

标签: java

解决方案


您可以创建一个包含所需 4 个列表的列表。

执行以下操作:

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<List<Integer>> fronts = new ArrayList<List<Integer>>();
        List<Integer> f0 = new ArrayList<>();
        f0.add(0);
        f0.add(1);
        f0.add(2);
        f0.add(3);
        fronts.add(f0);

        List<Integer> f1 = new ArrayList<>();
        f1.add(6);
        f1.add(7);
        f1.add(8);
        f1.add(9);
        fronts.add(f1);

        List<Integer> f2 = new ArrayList<>();
        f2.add(10);
        f2.add(11);
        f2.add(12);
        f2.add(13);
        fronts.add(f2);

        List<List<Integer>> result = new ArrayList<List<Integer>>();
        for (int i = 0; i < fronts.get(0).size(); i++) {
            List<Integer> temp = new ArrayList<Integer>();
            for (int j = 0; j < fronts.size(); j++) {
                temp.add(fronts.get(j).get(i));
            }
            result.add(temp);
        }
        System.out.println(result);
    }
}

输出:

[[0, 6, 10], [1, 7, 11], [2, 8, 12], [3, 9, 13]]

推荐阅读