创建更大的数组后,如何在相同 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;// 您的数据已保存并增加了数据数组的大小