我想将String
添加到ArrayList
中的特定位置,如下所示:
ArrayList <String[][]> arrayList3D = new ArrayList<>(Arrays.asList(arrayString3D));
我试过了:
arrayList3D.get(0).get(1).add("new Word");
但它不起作用......
答案 0 :(得分:0)
你关闭但不太正确。
该过程如下:
arrayList3D.get(0)
无论提供的索引(0
或更高)是否都会返回2D数组,即String[][]
。
因此,为了访问2D阵列的特定位置,您需要使用2对方括号,一对表示该行,另一对表示该列。
即
arrayList3D.get(0)[1][0] = "new Word";
答案 1 :(得分:0)
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");