我想知道在Java中是否有可能扩展数组但不更改其名称,因为我有多个与此数组相关联的方法。我正在考虑创建一个名称相同但两倍大小的新数组,然后将第一个数组中的所有元素复制到第二个数组中。这是可能的吗?
基本上,我想创建一个银行账户数组,如果客户创建的帐户太多,使得数组元素不足,它应该自动扩展。
谢谢任何回复!
我想知道在Java中是否有可能扩展数组但不更改其名称,因为我有多个与此数组相关联的方法。我正在考虑创建一个名称相同但两倍大小的新数组,然后将第一个数组中的所有元素复制到第二个数组中。这是可能的吗?
基本上,我想创建一个银行账户数组,如果客户创建的帐户太多,使得数组元素不足,它应该自动扩展。
谢谢任何回复!
ArrayList
是一个好建议,但有时也可以完全合理地使用 普通的旧数组。
在这种情况下,如果您需要调整数组大小,则可能需要研究其中一个 java.utils.Arrays.copyOf
方法。然而请注意,这些方法不会真正地 调整 数组大小,它们只是创建一个新数组并复制公共项。
如果新数组的大小大于旧数组,则新项目将被初始化为某个默认值(例如:对于 boolean[]
是 false
,对于 T[]
是 null
-- 详见文档)。您必须像这样使用这些函数:
myArray = copyOf(myArray, myNewSize);
记住,这种方法总是会返回一个新的数组。即使请求的大小与原始大小相同。如果这不是你想要的,你需要编写类似于以下的代码:
myArray = (myNewSize > myArray.length) ? copyOf(myArray, myNewSize) : myArray;
您无法更改已有的数组,但可以创建一个具有所需类型和大小的新数组,将数据从原始数组复制到新创建的数组中,然后将其分配给原始数组变量。
但是您不应该这样做。
不要使用数组,而是使用任何java.util.List
的实现。我认为ArrayList
是这种情况下的一个好选择。
这是我为我的Java编程课写的一个方法
private static double[] extendArraySize(double [] array){
double [] temp = array.clone();
array = new double[array.length + 1];
System.arraycopy(temp, 0, array, 0, temp.length);
return array;
}
它的工作原理非常简单。在使用它的过程中,必须将数组指定为方法的参数,并且方法的数据类型必须始终是传递进去的数组类型。
例如:
double [] z = {1,2,3}; //size of z = 3; [0,1,2] VALUES: [1,2,3]
z = extendArraySize(z); //size of z = 4; [0,1,2,3] VALUES: [1,2,3,0];
如果我解释得很糟糕,而且我相信有更好的方式使用向量或ArrayLists做这件事。但是,如果你想扩展原始数组,这是一种方法。
希望我能帮到你 =D
ArrayList<SimpleAccount> accounts = new ArrayList<SimpleAccount>();
- thejhpublic static void extendarrayafterinitialization(int [] x){
Scanner input =new Scanner(System.in);
System.out.print("How many values do you need to insert to the Array : ");
int how=input.nextInt();
int length=x.length+how;
int [] all=new int[length];
int value=0;
System.out.println(length);
for(int i=0;i<x.length;i++){
all[i]=x[i];
}
for(int j=x.length;j<length;j++){
System.out.print("Enter new value : ");
int index=input.nextInt();
all[j]=index;
}
for(int print : all){
System.out.println(print);
}
}