Java 创建更大的数组后,如何在同一类的其他函数中使用新数组?
它要求我们在没有内置函数或Arraylist的情况下实现这个类。 当需要使数据数组变大时,我创建了一个新数组并给它一个新的大小(即容量+10)。由于数据数组是一个数据成员,我可以从数组的其他函数访问它。但是,我无法访问新阵列。我可以使用数据数组创建更大的数组吗?如果没有,如何从类的其他函数访问新数组Java 创建更大的数组后,如何在同一类的其他函数中使用新数组?,java,arrays,dynamic-arrays,Java,Arrays,Dynamic Arrays,它要求我们在没有内置函数或Arraylist的情况下实现这个类。 当需要使数据数组变大时,我创建了一个新数组并给它一个新的大小(即容量+10)。由于数据数组是一个数据成员,我可以从数组的其他函数访问它。但是,我无法访问新阵列。我可以使用数据数组创建更大的数组吗?如果没有,如何从类的其他函数访问新数组 package ADTDynamicArrays; import java.util.*; public class DynamicIntgerArray { public int d
package ADTDynamicArrays;
import java.util.*;
public class DynamicIntgerArray {
public int data[];
int size;
int capacity;
public DynamicIntgerArray(){
data = new int[5];
size = 0;
capacity = 5;
}
public DynamicIntgerArray(int ca){
size=0;
if(ca<5)
capacity=5;
else
capacity=ca;
data=new int[capacity];
}
public boolean checkIndex(int index){
if(index < 0 || index >=data.length)
throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size);
else
return true; }
public void copyOldtoNew(int [] arry1, int arry2[]){
arry2=arry1;
}
public void checkCapacity(int s){
if(capacity<= s){
capacity +=10 ;
int newArray[]=new int[capacity];
copyOldtoNew(data,newArray);
}
}
public void getElement (int index){
}
public int getlength(){
return capacity;
}
public void insertElement(int element){
}
public void replaceElement(int index, int element){
}
public void print(){
}
public void addShiftElements(int index, int element){
}
}
封装adtdynamics阵列;
导入java.util.*;
公共类动态数组{
公共int数据[];
整数大小;
国际能力;
公共动态阵列(){
数据=新整数[5];
尺寸=0;
容量=5;
}
公共动态阵列(国际ca){
尺寸=0;
if(ca=data.length)
抛出新的IndexOutOfBoundsException(“索引:+Index+”,大小:+Size);
其他的
返回true;}
公共无效copyOldtoNew(int[]arry1,int arry2[]{
arry2=arry1;
}
公共无效检查容量(整数秒){
if(容量=数据长度)
抛出新的IndexOutOfBoundsException(“索引:+Index+”,大小:+Size);
其他的
返回true;}
公共无效copyOldtoNew(int[]arry1,int arry2[]{
}
公共无效检查容量(整数秒){
如果(容量在此代码之后):
int newArray[]=new int[capacity];
copyOldtoNew(data,newArray);
你需要这个小小的魔法:
data = newArray;
好吧,我希望你明白这根本不是魔术。在这段代码之后:
int newArray[]=new int[capacity];
copyOldtoNew(data,newArray);
你需要这个小小的魔法:
data = newArray;
好吧,我希望您理解它一点也不神奇。您应该创建一个新数组,然后像这样引用数据数组
int oldItems[]=new int[10];//这是您的数据数组
int newItems[]=newint[20];//这是新创建的数组
System.arraycopy(oldItems,0,newItems,0,10);//将新数组复制到数据数组
oldItems=newItems;//您保存的数据和数据数组大小的增加您应该创建一个新数组,然后像这样引用数据数组
int oldItems[]=new int[10];//这是您的数据数组
int newItems[]=newint[20];//这是新创建的数组
System.arraycopy(oldItems,0,newItems,0,10);//将新数组复制到数据数组
oldItems=newItems;//您保存的数据和数据数组的大小增加了我假设有代码您可以/不能修改?您需要编写什么部分?哪些部分不能修改?此外,如果这是学校任务,请记住,这样做并不是为了解决您的家庭作业问题!我添加了不打算修改的代码ified.这是我挖出来的一个老问题。这里没有问题。我假设有代码你可以/不能修改?你需要写什么部分?哪些部分不能修改?此外,如果这是学校的任务,请记住,这样做并不是为了解决你的家庭作业问题!我添加了不打算修改的代码。这是一个老问题我发现的问题。这里没有问题是的,但是两个数组的大小不同。这条语句不是只复制元素吗?不,这条语句不是复制元素。data
只是指向保存数组的内存块的指针。newArray
是指向另一个块的另一个指针。statementdata=newArray;
将一个指针替换为另一个指针。旧块不再被引用,因此它将被垃圾收集。此指针副本非常快,并且可以工作。因此名为data的指针将被分配给新数组?否,名为newArray
的指针将被分配给名为dat的指针a
。好的,非常清楚,谢谢。我被一个事实误导了,那就是人们总是说Java中不使用指针。是的,但两个数组的大小不同。这个语句不是只复制元素吗?不,这个语句不是要复制元素。数据
只是指向内存块的指针g您的数组。newArray
是指向另一个块的另一个指针。语句data=newArray;
将一个指针替换为另一个指针。旧块不再被引用,因此它将被垃圾收集。此指针副本非常快,并且可以工作。因此称为data的指针将被分配给新数组?不,是名为newArray
的指针将被分配给名为data
的指针。好的,非常清楚,谢谢。我被一个事实误导了,那就是人们总是说Java中不使用指针。