Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java多维数组无法动态添加值_Java_Arrays - Fatal编程技术网

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

Java多维数组无法动态添加值,java,arrays,Java,Arrays,我有一个多维数组,类似这样: String[][] A = {{"a","b","c","d"}}; Sting[][] A = {{"a","b","c","d"},{"e","f","g","h"}} 我需要在这个数组中附加一些值,比如 while(rs.next()){ A.add(rs.getString(1)); -->e A.add(rs.getString(1)); -->f A.add(rs.getString(1)); -->g A.add(rs.getS

我有一个多维数组,类似这样:

String[][] A = {{"a","b","c","d"}};
Sting[][] A = {{"a","b","c","d"},{"e","f","g","h"}}
我需要在这个数组中附加一些值,比如

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
}
我需要这样的结果数组:

String[][] A = {{"a","b","c","d"}};
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在这里不起作用。如何动态地实现这一点?请帮助我,因为数组的大小是固定的,并且是在您首次将其初始化为1行4列时确定的,所以您不能。 如果需要具有动态长度的类似数组的结构,请使用
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>> a = new ArrayList<>();
然后将其添加到二维数组中,如下所示:

a.add(newRow);
你可以在一个声明中这样做,但它开始看起来有点混乱

要添加到现有行,请假设您要在第二行的末尾添加一个字符串,该行的索引为1:

a.get(1).add("d");

get
将返回位置1处的
ArrayList
;这将返回一个引用,以便您可以修改该行。

@androidGenX我刚刚做了。我将传递到函数到drawtable;公共静态void绘图表(PDPage页面、PDPageContentStream内容流、浮点y、浮点边距、字符串[][]内容)。其中的内容是您告诉我要放在列表中的内容。所以它会产生错误!!如果您在一天结束时需要
String[][]
,则必须将其转换回来。或者预先计算出尺寸。但是您不能调整Java数组的大小。@androidGenX是一种您无法控制的方法吗?如果是这种情况,则必须先将列表转换为字符串[],然后再将其传递给此方法。将所有值放入列表后,您就知道需要的大小,并且可以创建一个数组
新字符串[A.size()][4]
,该数组可以保存所有数据。如何创建可以将列表转换为数组的数组。你能把它写下来吗@埃兰,帮帮我,伙计!如果字符串[][],请改用ArrayList。。。它允许数据大小的不可预测性,因为否则数组必须具有固定大小…FWIW,有很多库可以从ResultSet读取到集合中。还负责正确地打开和关闭它们,将行转换为bean和其他有用的样板文件。许多是轻量级的(不是整个ORM开销)。我喜欢Commons DbUtils和jooQ。如果您对接口进行编码,您可以执行
List newRow=Arrays.asList(“a”,“b”)直接。即使是
a.add(asList(“a”,“b”))
看起来也没有那么凌乱,那么。@Thilo您不能用
ArrayList
;最后一个
asList
不会返回
ArrayList
。您可以使其成为
ArrayList
,但可能会丢失一些特定于
ArrayList的功能。这取决于你需要对二维数组做什么。我同意
a.get(1).add(“d”)
可能不再有效。然后可以使用复制构造函数。