如何将Element添加到3维ArrayList? - Java

时间:2017-11-11 22:03:58

标签: java arraylist

我想将String添加到ArrayList中的特定位置,如下所示:

ArrayList <String[][]> arrayList3D = new ArrayList<>(Arrays.asList(arrayString3D));

我试过了:

arrayList3D.get(0).get(1).add("new Word");

但它不起作用......

3 个答案:

答案 0 :(得分:0)

你关闭但不太正确。

该过程如下:

arrayList3D.get(0)无论提供的索引(0或更高)是否都会返回2D数组,即String[][]

因此,为了访问2D阵列的特定位置,您需要使用2对方括号,一对表示该行,另一对表示该列。

arrayList3D.get(0)[1][0] = "new Word";

答案 1 :(得分:0)

Java中的{p> Array不提供get方法。等效项由括号表示法给出。您可以将元素设置为索引i,如:

array[i] = value;

您的ArrayList包含String[][]类型的数组元素,其中包含其他包含String元素的数组。

所以正确的访问方式如下:

arrayList3D.get(0)[1][i] = "new Word";

其中i是您要在最后一个数组中添加元素的位置。

也许这个观点有助于更多:

arrayList3D  // ArrayList<String[][]>
    .get(0)  // String[][]
    [1]      // String[]
    [i]      // String
        = "new Word";

如果您想拥有get方法并且能够动态添加元素,则需要ArrayList<List<List<String>>>之类的内容,因为数组属于固定大小< /强>

您可以通过手动将String[][][]转换为List<List<List<String>>>来实现,例如使用常规循环:

List<List<List<String>>> arrayList3D = new ArrayList<>();
// Traverse all 2-dim elements
for (String[][] dim2Arr : arrayString3D) {
    List<List<String>> arrayList2D = new ArrayList<>();
    // Traverse all 1-dim elements
    for (String[] dim1Arr : dim2Arr) {
        List<String> arrayList1D = Arrays.asList(dim1Arr);

        // Add 1-dim to 2-dim
        arrayList2D.add(arrayList1D);
    }

    // Add 2-dim to 3-dim
    arrayList3D.add(arrayList2D);
}

答案 2 :(得分:0)

男人,首先你应该创建一个数组,然后再创建另一个数组。试试这个。

ArrayList<ArrayList<String>>  arrayList3D = new ArrayList<ArrayList<String>>();

稍后,您应该创建另一个。

arrayList3D.add(0, new ArrayList<String>());

但你表明你想要这样做。

arrayList3D.get(0).get(1).add("new Word");

这里的问题是它在该位置是否存在值。它确实有效,但它没有......你应该写这个。

ArrayList3D.get(0).add(1, "value to input");