创建更大的数组后,如何在相同 class 的其他函数中使用新数组?
After creating a bigger array, how do I use the new array in other functions of the same class?
要求我们在没有内置函数或 Arraylist 的情况下实现此 class。
当需要使数据数组更大时,我创建了一个新数组并给它一个新的大小(即容量+10)。由于数据数组是一个数据成员,我可以从数组的其他函数访问它。但是,我无法访问 newArray。我可以使用数据数组创建更大的数组吗?如果没有,如何从 class 的其他函数访问新数组?
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){
}
}
这是提供给我们的代码,我们必须使用我们无法修改的代码:
package ADTDynamicArrays;
import java.util.*;
public class DynamicIntgerArray {
public int [] data;
public DynamicIntgerArray(){
data = new int[5];
size = 0;
capacity = 5;}
public DynamicIntgerArray(int ca){
}
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[]){
}
public void checkCapacity(int s){
if(capacity<= s){
capacity +=10 ;
}
}
public void getElement (int index){
}
public int getlength(){
}
public void insetElement(int element){
checkCapacity(size+1);
}
public void replaceElement(int index, int element){
}
public void print(){
}
public void addShiftElements(int index, int element){
if(checkIndex(index)){
checkCapacity(size + 1);
}
}
}
此代码后:
int newArray[]=new int[capacity];
copyOldtoNew(data,newArray);
你需要这个小魔法:
data = newArray;
好吧,我希望你明白这根本不是魔法。
您应该必须创建一个新数组,然后像这样将数据数组引用到它
int oldItems[] = new int[10];// 这是你的数据数组
int newItems[] = new int[20];// 这是新创建的数组
System.arraycopy(oldItems, 0, newItems, 0, 10);// 复制新数组到数据数组
oldItems = newItems;// 您的数据已保存并增加了数据数组的大小
要求我们在没有内置函数或 Arraylist 的情况下实现此 class。 当需要使数据数组更大时,我创建了一个新数组并给它一个新的大小(即容量+10)。由于数据数组是一个数据成员,我可以从数组的其他函数访问它。但是,我无法访问 newArray。我可以使用数据数组创建更大的数组吗?如果没有,如何从 class 的其他函数访问新数组?
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){
}
}
这是提供给我们的代码,我们必须使用我们无法修改的代码:
package ADTDynamicArrays;
import java.util.*;
public class DynamicIntgerArray {
public int [] data;
public DynamicIntgerArray(){
data = new int[5];
size = 0;
capacity = 5;}
public DynamicIntgerArray(int ca){
}
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[]){
}
public void checkCapacity(int s){
if(capacity<= s){
capacity +=10 ;
}
}
public void getElement (int index){
}
public int getlength(){
}
public void insetElement(int element){
checkCapacity(size+1);
}
public void replaceElement(int index, int element){
}
public void print(){
}
public void addShiftElements(int index, int element){
if(checkIndex(index)){
checkCapacity(size + 1);
}
}
}
此代码后:
int newArray[]=new int[capacity];
copyOldtoNew(data,newArray);
你需要这个小魔法:
data = newArray;
好吧,我希望你明白这根本不是魔法。
您应该必须创建一个新数组,然后像这样将数据数组引用到它
int oldItems[] = new int[10];// 这是你的数据数组
int newItems[] = new int[20];// 这是新创建的数组
System.arraycopy(oldItems, 0, newItems, 0, 10);// 复制新数组到数据数组
oldItems = newItems;// 您的数据已保存并增加了数据数组的大小