如果我有
class example {
int x;
int data[] = new int[x]
}
如果我想创建一个新方法来创建一个大小比数据长度大的新数组,我将如何进行?我不明白当我不知道初始长度并添加一个新数组时如何创建一个新数组?
答案 0 :(得分:2)
对于学习过程:
您可以动态创建数组。
class example {
int size;
int data[];
public example(int size) {
this.size = size;
this.data = new int[size];
}
}
但是一旦声明了数组,你就无法改变它的大小。
您需要创建更大尺寸的新数组,然后将旧数组的内容复制到其中。您可以查看Arrays.copyOf
方法。您可以查看此SO Answer
。
您可以在example
课程中添加以下方法。
public void increaseSizeOfArray(int incrementSize) {
if (incrementSize > 0 && data != null && data.length > 0) {
int copiedArray[] = Arrays.copyOf(data, data.length + incrementSize);
data = copiedArray;
}
}
答案 1 :(得分:0)
使用这样或更好地使用ArrayList
class example {
int x;
int data[] = new int[x]
int newArr[]=new int[data.length+1]
}
答案 2 :(得分:0)
我宁愿创建一个两倍于数组长度的新数组,而不是这样做。始终制作新阵列的成本很高。
在使用数组添加元素之前,您当然无法使用您的方法。一旦它有一些元素,你可以将它的大小加倍,这样你就不必在一段时间内制作一个新元素。如果新的双倍大小的数组仅变为1/3满,则将总大小减半以释放内存空间。
显然,由于您的阵列可能很大,因此每项操作都可能成本很高。
或者您也可以使用ArrayList