我有一个像这样的多维数组:
String[][] A = {{"a","b","c","d"}};
我需要将值附加到像这个
这样的数组while(rs.next()){
A.add(rs.getString(1)); -->e
A.add(rs.getString(1)); -->f
A.add(rs.getString(1)); -->g
A.add(rs.getString(1)); -->h
}
我需要这样的结果数组:
Sting[][] A = {{"a","b","c","d"},{"e","f","g","h"}}
此外,我们无法预测while(...)可能包含多个值,如
Sting[][] A = {{"a","b","c","d"},{"e","f","g","h"},{"A","B","C","D"},......}
我知道A.add
在这里工作不起作用。如何动态地实现这一点?请帮帮我
答案 0 :(得分:5)
你不能,因为数组的大小是固定的,并且它是在你第一次初始化为4行的1行时确定的。
如果您需要具有动态长度的数组结构,请使用ArrayList
。
如果内部数组具有固定长度(在您的示例中似乎为4),则可以使用包含数组的ArrayList:
List<String[]> A = new ArrayList<String[]>();
// repeat this as many times as you need
String[] arr = new String[4];
arr[0]=...
arr[1]=...
arr[2]=...
arr[3]=...
A.add(arr);
如果列数不是常数,请使用ArrayList<ArrayList<String>>
。
完成填充后,这是将List转换为数组的一种方法:
String[][] array = new String[A.size()][4];
int i=0;
for (String[] arr : A) {
array[i] = arr;
i++;
}
答案 1 :(得分:1)
设置多维ArrayList
:
ArrayList<ArrayList<String>> a = new ArrayList<>();
这会创建一个没有行的ArrayList
。
要添加行,我会将该行创建为单独的变量:
ArrayList<String> newRow = new ArrayList<>(Arrays.asList("a", "b", "c"));
然后将其添加到二维数组中,如:
a.add(newRow);
你可以在一个声明中做到这一点,但它看起来有点乱。
要添加到现有行 - 假设您要将字符串添加到第2行的末尾,该行具有索引1:
a.get(1).add("d");
get
将返回位置1的ArrayList<String>
;这将返回引用,因此您可以修改该行。