所有关于数组的操作 如添加元素,删除元素,替换指定位置元素的算法思想,共同点是
都需要使用到新的数组,
然后复制元素到新的数组
最后需要用新数组替换旧数组。
替换数组中的指定元素,直接替换就可以。
import java.util.Arrays; import java.util.Scanner; import java.util.ArrayList; public class ObjectArray{ public static void main(String[] args){ MyArray array=new MyArray(); //调用MyArray中的size方法 System.out.println("初始数组长度"); System.out.println(array.size()); //调用MyArray中的add方法,添加元素 for(int i=10;i<20;i++){ array.add(i); } System.out.println("添加完后的元素和长度"); array.show(); System.out.println(array.size()); //删除元素第10个 array.del(9); System.out.println("删除后的元素和长度"); array.show(); System.out.println(array.size()); //获取某个元素 System.out.println("获取第三个元素"); array.get(2); //元素插入指定位置 array.insert(2,100); array.show(); //替换指定位置的元素 System.out.println("替换指定位置的元素"); array.set(3,20); array.show(); } } class MyArray{ //存储数据的数组 private int[] array; public MyArray(){ array=new int[]{}; }//返回长度 public int size(){ return array.length; } //元素添加 public void add(int value){ int[] newarray=new int[array.length+1]; //复制旧数组的数据到新的数组 for(int i=0;i<array.length;i++){ newarray[i]=array[i]; } //将元素添加到新数组最后一个位置 newarray[array.length]=value; //新数组替换旧数组 array=newarray; } //方法返回所有元素 public void show(){ System.out.println(Arrays.toString(array)); } //方法删除数组指定下标元素 public void del(int index){ int[] newarray=new int[array.length-1]; for (int i = 0;i<newarray.length; i++) { if (i < index) { newarray[i] = array[i]; } else { newarray[i] = array[i + 1]; } } // 新的数组替换旧的数组; array = newarray; } //获取某个元素 public void get(int index){ System.out.println(array[index]); } //元素插入数组指定位置,index位置,value要插入的元素 public void insert(int index,int value){ int[] newarray=new int[array.length+1]; for(int i=0;i<array.length;i++){ if(i<index){ newarray[i]=array[i]; }else if(i>index){ newarray[i]=array[i]; }else{ newarray[index]=value; } } //新数组替换旧的数组 array=newarray; } //替换数组中指定位置的元素 public void set(int index,int value){ if(index>array.length||index<(-array.length)){ System.out.println("下标越界"); } else{ array[index]=value; } } }