Java 列表到二维字符串的列表

Java 列表到二维字符串的列表,java,Java,我有一个由定义的列表的动态列表 List<List<String>> listOfLists = new ArrayList<List<String>>(); 在本例中,它有2组,每组4个项目,但可以动态地有1组到n组 现在,我需要一个二维字符串,比如: String[][] data ={{"A", "B", "C", "D"}, {"E",

我有一个由定义的列表的动态列表

List<List<String>> listOfLists = new ArrayList<List<String>>(); 
在本例中,它有2组,每组4个项目,但可以动态地有1组到n组

现在,我需要一个二维字符串,比如:

String[][] data ={{"A", "B", "C", "D"}, {"E", "F", "G", "H"}}

是否存在一种可以轻松转换的方法?如果没有,我如何动态创建一个二维
字符串
,其中我知道列的数量,但不知道行的数量?

使用streams像这样尝试。它对列表进行流式处理,并将每个内部列表转换为数组,然后将这两个数组转换为数组的数组

List<List<String>>  list = List.of(
                List.of("A", "B", "C", "D"),
                List.of("E", "F", "G", "H"));
String[][] arr = list.stream()
             .map(lst->lst.stream()
                     .toArray(String[]::new))
             .toArray(String[][]::new);

System.out.println(Arrays.deepToString(arr));
你也可以这样做

String[][] arr = new String[list.size()][];
for (int i = 0; i < list.size(); i++) {
    arr[i] = list.get(i).toArray(new String[0]);
}

String[][]arr=新字符串[list.size()][];
对于(int i=0;i
这应该可以:

private static String[][] convert(List<List<String>> listOfLists) {
    var result = new String[listOfLists.size()][];

    var i = 0;
    for (var list : listOfLists) {
        result[i] = new String[list.size()];
        var j = 0;

        for (var elem : list) {
            result[i][j] = elem;
            j++;
        }

        i++;
    }

    return result;
}
私有静态字符串[][]转换(列表列表){
var result=新字符串[listOfLists.size()][];
var i=0;
用于(变量列表:列表){
结果[i]=新字符串[list.size()];
var j=0;
对于(变量元素:列表){
结果[i][j]=elem;
j++;
}
i++;
}
返回结果;
}
我的提案

private String[][] toMatrix(List<List<String>> listOfLists) {
    int size = listOfLists.size();
    String[][] result = new String[size][];

    for (int i = 0; i < size; i++) {
        List<String> list = listOfLists.get(i);
        result[i] = new String[list.size()];

        for (int j = 0; j < list.size(); j++) {
            result[i][j] = list.get(j);
        }
    }

    return result;
}
private String[]toMatrix(列表列表){
int size=listOfLists.size();
字符串[][]结果=新字符串[大小][];
对于(int i=0;i
由于某些原因,我的android studio无法识别“var”,遗憾的是
var
是Java 10中添加的一个新Java关键字。只需将var替换为
String[][]
谢谢。这里的问题是,我想要一个2维字符串的结果,每个组有4个元素。不是字符串[]数据={“A”、“B”、“C”、“D”、“E”、“F”、“G”、“H”},而是字符串[]数据={{“A”、“B”、“C”、“D”}、{“E”、“F”、“G”、“H”}这就是方法
toMatrix
返回的-
String[]
(两对括号)。此
{“A”、“B”、“C”、“D”、“E”、“F”、“G”、“H”}
的类型是一维数组-
字符串[]
(一对括号)。可以,但字符串[][]中的项目不是一组4个项目。我错了吗?
String[]strings=toMatrix(列表);System.out.println(Arrays.deepToString(strings))我得到的结果
[[A,B,C,D],[E,F,G,H]]
已解决。对不起,我脑子里想的是一件非常愚蠢的事情。非常感谢你的帮助!
private static String[][] convert(List<List<String>> listOfLists) {
    var result = new String[listOfLists.size()][];

    var i = 0;
    for (var list : listOfLists) {
        result[i] = new String[list.size()];
        var j = 0;

        for (var elem : list) {
            result[i][j] = elem;
            j++;
        }

        i++;
    }

    return result;
}
private String[][] toMatrix(List<List<String>> listOfLists) {
    int size = listOfLists.size();
    String[][] result = new String[size][];

    for (int i = 0; i < size; i++) {
        List<String> list = listOfLists.get(i);
        result[i] = new String[list.size()];

        for (int j = 0; j < list.size(); j++) {
            result[i][j] = list.get(j);
        }
    }

    return result;
}