java从数组中删除元素(数组的缩容)
1,解决方案一
/*
* 数组的缩容(删除元素)
* 第一种解决方案
* 移动元素,被删除元素后面的元素往前移一位
* 优点:不需要创建新数组,省内存,速度快
* 缺点:容易造成数组的结尾有闲置的元素位
* */
public class Test07 {public static void main(String[] args) {int[] arr = {5,9,7,8,4,3,6,1,2,22,31};System.out.print("之前的数组:");for (int x : arr){System.out.print(x+"\t");}System.out.println();//有效元素个数统计变量int index = arr.length;//删除数组中元素的索引int delIndex = 6;for (int i = delIndex;i< arr.length-1;i++){arr[i] = arr[i+1];}arr[arr.length-1] = 0;index--;System.out.print("之后的数组:");for (int i = 0;i<index;i++){System.out.print(arr[i]+"\t");}}
}
执行代码如下:
2,解决方案二
/*
* 数组的缩容
* 解决方案二
* 创建新数组
* 优点:不会有空余的元素位
* 缺点:需要创建新数组
* */
public class Test08 {public static void main(String[] args) {int[] arr = {5,9,7,8,4,3,6,1,2,22,31};//新数组int[] newArr = new int[arr.length-1];System.out.print("之前的数组:");for (int x : arr){System.out.print(x+"\t");}System.out.println();//删除索引为6的元素int delIndex = 6;//处理被删索引之前的元素for (int i = 0;i<delIndex;i++){newArr[i] = arr[i];}//处理被删元素索引之后的元素for (int i = delIndex;i< arr.length-1;i++){newArr[i] = arr[i+1];}//遍历新数组System.out.print("之后的数组:");for (int x:newArr){System.out.print(x+"\t");}}
}
执行代码如下: