将单个数组列添加到2d数组的末尾。 Java的

时间:2013-10-14 10:20:12

标签: java arrays multidimensional-array

我正在尝试将另一列数据添加到我的2d数组的末尾,但无法使其正常工作。 任何帮助都会很棒。这是我到目前为止所做的。

double[] d = a.Total();

String[][] sr = a2.records();
String[] d2 = new String[d.length];

for (int i = 0; i < d.length; i++)  
d2[i] = String.valueOf(d[i]);       // converts double[] into string[]

我想要的结果是2d数组全部[sr.length + 1] [],最后一列数据是d2。 两个数组都有相同的行数。

三江源

2 个答案:

答案 0 :(得分:1)

String[][] sr = a2.records();

执行此操作时,将使用固定编号创建sr数组。从ar.records()返回的行和列。数组本质上不是动态的,因此,一旦创建,您就无法向其添加额外的行/列。因此,您需要创建一个新数组(具有更高的行/列数),并将sr数组中的所有值复制到其中,然后将新列添加到其中。

另一个更好的解决方案是使用ArrayList而不是数组,因为它们是动态的(您可以根据需要添加更新的元素)。

编辑:您可以执行类似操作,将数据从旧数组复制到新数组,并将d数组添加为新行

String[][] newsr = Arrays.copyOf(sr, sr.length + 1); // New array with row size of old array + 1

newsr[sr.length] = new String[sr.length]; // Initializing the new row

// Copying data from d array to the newsr array
for (int i = 0; i < sr.length; i++) {
    newsr[sr.length][i] = String.valueOf(d[i]);
}

答案 1 :(得分:0)

使用数组无法完成。唯一的方法是创建一个大小为n + 1或更大的新数组,并复制旧数组中的所有值。 例如:

String[][] sr2 = Arrays.copyOf(sr,sr.length + 1);
sr2[sr2.length-1]=d2;

如果需要经常添加新列,请尝试使用列表(ArrayList或链接列表)