2d ArrayList放置

时间:2012-12-11 01:14:05

标签: java arraylist

我想在以下代码中使用ArrayList而不是数组:

for(int k=0;k<SIZE;k++) //size is 9
    for(int j=0;j<SIZE;j++)
        ar1[k][j] = buttons[k][j].getText();

这就是我猜的ArrayList的样子:

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

但由于我不能使用get方法,所以很混乱..我不知道该怎么做。

4 个答案:

答案 0 :(得分:2)

试试这个:ar1.get(k).get(j)

第一个get()获取索引为k的ArrayList;第二个get()获取所需的字符串。

如果要将字符串设置为[k, j],则可以使用ar1.get(k).set(j, str)。当然,ar1.get(k)不能为空。第一次在该索引处使用ArrayList时,您必须添加或设置类似ar1.add(new ArrayList<String>());的ArrayList。

同样,如果ArrayList的元素太少,你可以使用ar1.get(k).add(str)将str添加到索引为k的ArrayList的末尾。

答案 1 :(得分:2)

试试这种方式

List<List<String>>ar1 = new ArrayList<>();
//lets say we want to have array [2, 4]
//we will initialize it with nulls
for (int i=0; i<2; i++){
    ar1.add(new ArrayList<String>());
    for(int j=0; j<4; j++)
        ar1.get(i).add(null);
}
System.out.println("empty array="+ar1);

//lets edit contend of that collection
ar1.get(0).set(1, "position (0 , 1)");
ar1.get(1).set(3, "position (1 , 3)");
System.out.println("edited array="+ar1);

//to get element [0, 1] we can use: ar1.get(0).get(1)
System.out.println("element at [0,1]="+ar1.get(0).get(1));

输出:

empty array=[[null, null, null, null], [null, null, null, null]]
edited array=[[null, position (0 , 1), null, null], [null, null, null, position (1 , 3)]]
element at [0,1]=position (0 , 1)

答案 2 :(得分:1)

在声明List时使用ArrayList类型始终是一个好习惯。而不是

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

使用

List<List<String>>ar1 = new ArrayList<List<String>>();

您可以通过.add(element)方法轻松地在arraylist中添加元素。阅读有用的javadoc以获取列表方法的完整列表。起初当然是空的。要开始填充它,您需要创建一个arraylist

List<String> a = new ArrayList<String>()
a.add("element");

然后在你的2d arraylist中添加1d arraylist

ar1.add(a);

要在2d列表中插入元素,您必须访问要插入的1d arraylist的位置,然后执行.add(String)

ar1.get(0).add("newly added element"); //will get the first list then append the string to that list

同样,获取2d列表中的元素

ar1.get(0).get(0); //will get the first lis then get the first element of the pulled list

答案 3 :(得分:0)

2-d数组可能是更好的抽象,但是如果你因为其他原因想要创建ArrayLists的ArrayList,那么就可以完成。请记住,在向行中添加元素之前,需要添加行本身。

//Initialize the rows
ArrayList<ArrayList<String>> ar1 = new ArrayList<ArrayList<String>>
for (int i=0; i<SIZE; i++) {
    ar1.add(new ArrayList<String>());
    for (int j=0; j<SIZE; j++) {
        ar1.get(i).set(j, "");
    }
}

//Now setting a value works
ar1.get(row).set(column, value);

//As does getting one
String s = ar1.get(row).get(column);