Java多维数组无法动态添加值

时间:2014-10-02 05:30:16

标签: java arrays

我有一个像这样的多维数组:

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在这里工作不起作用。如何动态地实现这一点?请帮帮我

2 个答案:

答案 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>;这将返回引用,因此您可以修改该行。