package array; public class DArray{ private int[] arr; private int currCount; private static final int InitSize=2; public DArray(){ arr=new int[InitSize]; } public void add(int number){ if(currCount>=arr.length){ // 实际数量已经超过数组长度,需要扩容 int[] arrNew=new int[arr.length*2];// 扩容 // 填充原值 for(int j=0;j<arr.length;j++){ arrNew[j]=arr[j]; } // 原有数组空间放弃,arr指向新创建的数组空间(创建在堆中) arr=arrNew; arr[currCount]=number; currCount++; }else{ // 无需扩容 arr[currCount]=number; currCount++; } } public void display(){ System.out.print("动态数组合法元素为:"); for(int i=0;i<currCount;i++){ System.out.print(arr[i]+","); } System.out.println(); } public void displayAll(){ System.out.print("动态数组所有元素为:"); for(int i=0;i<arr.length;i++){ System.out.print(arr[i]+","); } System.out.println(); } public int[] getArray(){ int[] arrOutput=new int[currCount]; for(int i=0;i<currCount;i++){ arrOutput[i]=arr[i]; } return arrOutput; } public int get(int index){ return arr[index]; } public static void main(String[] args){ DArray d=new DArray(); d.add(1); d.add(2); d.add(3); d.add(4); d.add(5); d.add(6); d.add(7); d.add(8); d.add(9); d.display(); d.displayAll(); int[] arrOutput=d.getArray(); System.out.print("arrOutput:"); for(int i=0;i<arrOutput.length;i++){ System.out.print(arrOutput[i]+","); } System.out.println(); System.out.println("第8号元素为"+d.get(8)); } }
这个类,既让学生对基础数据结构有一定了解,又为后面的学习铺开了道路。