【问题标题】:How to convert List<List<String[]>> into String[][][]? [duplicate]如何将 List<List<String[]>> 转换为 String[][][]? [复制]
【发布时间】:2013-03-31 17:56:42
【问题描述】:

这是我的代码:

    List<List<String[]>> myBigList=new ArrayList<List<String[]>>();
    String[] s11={"A","30"};
    String[] s12={"B","20"};
    List<String[]> l1=new ArrayList<String[]>();
    l1.add(s11);
    l1.add(s12);

    String[] s21={"B","10"};
    String[] s22={"B","20"};
    List<String[]> l2=new ArrayList<String[]>();
    l2.add(s21);
    l2.add(s22);

    String[] s31={"C","2"};
    String[] s32={"A","10"};
    String[] s33={"A","3"};
    List<String[]> l3=new ArrayList<String[]>();
    l3.add(s31);
    l3.add(s32);
    l3.add(s33);

    myBigList.add(l1);
    myBigList.add(l2); 
    myBigList.add(l3);

    String[][] test2DArr=new String[2][myBigList.size()];
myBigList.toArray(test2DArr);

运行时说“[ERROR] - Uncaught exception escaped” 那么如何将 List> 转换为 String[][] 呢?

【问题讨论】:

  • 首先,您没有Strings 列表的列表,您有String[] 列表的列表。这有很大的不同。
  • 第一个应该问的问题是,为什么要一个String[][]?
  • list - 1d array, list in list - 2d array, array in list in list - WTF!!
  • @Makoto 谢谢你我修好了
  • 这个是“固定的”怎么办?我认为您拥有ArrayList&lt;String[]&gt;这一事实没有任何变化。我也没有看到切换到String[][] 的理由。

标签: java arrays string multidimensional-array


【解决方案1】:

假设(这并不容易......)任何人都会面临类似的问题,将List&lt;List&lt;String[]&gt;&gt; 转换为String[][][] 的有效解决方案是:

// List<List<String[]>> myBigList = new ArrayList<List<String[]>>();
String[][][] amyBigArray = new String[myBigList.size()][][];
for (int i = 0; i < myBigList.size(); i++) {
    int innerSize = myBigList.get(i).size();
    String[][] innerArray = new String[innerSize][];
    for (int j = 0; j < innerSize; j++) {
        innerArray[j] = myBigList.get(i).get(j);
    }
    amyBigArray[i] = innerArray;
}

可以打印:

for (String[][] strings : amyBigArray) {
    for (String[] strings3 : strings) {
        System.out.println(Arrays.toString(strings3));
    }
}

它会为给定的问题输入提供正确的输出:

[A, 30]
[B, 20]
[B, 10]
[B, 20]
[C, 2]
[A, 10]
[A, 3]

【讨论】:

    【解决方案2】:

    如果我理解正确,这就是你想要的(或多或少)

    List<String> list = ..;
    String[] array = list.toArray(new String[list.size()]);
    

    但无论如何。你的逻辑是完全错误的,你有“数组中的数组在数组中的数组中的数组中的数组中的数组中的数组中的数组中的数组”......你明白了吗?

    【讨论】:

    • String[] s11={"A","30"};字符串[] s12={"B","20"};列表 l1=new ArrayList(); l1.add(s11); l1.add(s12);字符串[][] test2DArr=新字符串[2][l1.size()]; l1.toArray(test2DArr);
    • @Tom 编辑您的问题,详细说明您在代码、程序中尝试做什么(实现),因为您没有真正解释您尝试做什么
    猜你喜欢
    • 1970-01-01
    • 2013-08-26
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 2021-01-13
    • 2021-02-28
    • 1970-01-01
    相关资源
    最近更新 更多