数组的增删改查操作实现

mac2025-02-07  16

package dataStructures.list; public class MyArray { int[] array; public MyArray() { array=new int[0]; } /** * 在数组末尾插入一个元素 * @param element */ public void insertLast(int element) { //先创建一个新的数值,比原数值的长度大于1 int[] newArray=new int[array.length+1]; //判断原数值是否为空 if(!isEmpty()) { for(int i=0;i<array.length;i++){ //把原数组中的值赋值给新数组 newArray[i]=array[i]; } } //把新增的元素赋值给新数组的最后一位 newArray[newArray.length-1]=element; //用新数组替换原数组(引用替换) array=newArray; } public void insert(int index,int element) { if(index<0 || index>array.length-1) { throw new IndexOutOfBoundsException("下标越界了"); } //新建一个长度大于原数组长度1位的新数组 int[] newArray=new int[array.length+1]; //循环原数组 for(int i=0;i<array.length;i++){ //如果i小于新增的下标,则复制原数组元素至新数组中 if(i<index) { newArray[i]=array[i]; }else {//如果i大于等于新增下标,则把原数组元素i位元素复制至新数组i+1位 newArray[i+1]=array[i]; } } //新数组index位的元素赋值为element newArray[index]=element; //新数组替换原数组 array=newArray; } /** * 根据下标删除数组元素 * @param index 下标 */ public void remove(int index) { if(index<0 || index>array.length-1) { throw new IndexOutOfBoundsException("下标越界了"); } //新建一个数组比原数组长度小1 int[] newArray =new int[array.length-1]; for(int i=0;i<array.length-1;i++) { //如果下标小于需要删除的下标,那么复制原数组的数据到新数组中 if(i<index) { newArray[i]=array[i]; }else {//如果下标大于等于需要删除的下标,则需跳过需要删除的下标,把原数组后面的数据复制到新数组 newArray[i]=array[i+1]; } } //新数组替换原数组 array=newArray; } /** * 根据下标更新数组的元素 * @param index 下标 * @param element 新元素 */ public void update(int index,int element) { if(index<0 || index>array.length-1) { throw new IndexOutOfBoundsException("下标越界了"); } array[index]=element; } /** * 根据元素获取下标 * @param element * @return 如果没找到,则返回-1 */ public int getIndex(int element) { if(!isEmpty()) { for (int i = 0; i < array.length; i++) { if(array[i]==element) { return i; } } } return -1; } /** * 根据下标获取数组内容 * @param index 下表索引 * @return */ public int getValue(int index) { if(index<0 || index>array.length-1) { throw new IndexOutOfBoundsException("下标越界了"); } return array[index]; } public boolean isEmpty() { return array.length==0; } public void show() { if (!isEmpty()) { for (int i = 0; i < array.length; i++) { System.out.print(array[i]+" "); } } System.out.println(); } public static void main(String[] args) { MyArray myArray=new MyArray(); myArray.insertLast(1); myArray.insertLast(2); myArray.insertLast(3); myArray.insertLast(4); myArray.insert(3, 8); myArray.show(); System.out.println(myArray.getValue(1)); myArray.remove(1); myArray.show(); myArray.update(1, 9); myArray.show(); System.out.println(myArray.getIndex(8)); } }
最新回复(0)