我想在以下代码中使用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方法,所以很混乱..我不知道该怎么做。
答案 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);