如何在Java中删除数组元素
时间:2020-02-23 14:34:30 来源:igfitidea点击:
在Java中创建数组时,我们指定其数据类型和大小。
JVM使用它为数组元素分配必要的内存。
没有从数组中删除元素的特定方法。
1.使用for循环从数组中删除一个元素
此方法需要创建一个新的数组。
我们可以使用for循环来填充新数组,而无需删除想要删除的元素。
package com.theitroad.java; import java.util.Arrays; public class Main { public static void main(String[] args) { int[] arr = new int[]{1,2,3,4,5}; int[] arr_new = new int[arr.length-1]; int j=3; for(int i=0, k=0;i<arr.length;i++){ if(i!=j){ arr_new[k]=arr[i]; k++; } } System.out.println("Before deletion :" + Arrays.toString(arr)); System.out.println("After deletion :" + Arrays.toString(arr_new)); } }
代码将删除索引3处的元素。
此方法将索引3处的元素以外的所有元素简单地复制到新数组中。
2.按其值删除数组元素
与前一种情况不同,此代码将根据其值删除该元素。
这不适用于重复项,因为必须知道删除后阵列的大小。
package com.theitroad.java; import java.util.Arrays; public class Main { public static void main(String[] args) { int[] arr = new int[]{1,2,3,4,5}; int[] arr_new = new int[arr.length-1]; int j=3; for(int i=0, k=0;i<arr.length;i++){ if(arr[i]!=j){ arr_new[k]=arr[i]; k++; } } System.out.println("Before deletion :" + Arrays.toString(arr)); System.out.println("After deletion :" + Arrays.toString(arr_new)); } }
这种情况与前一种情况之间的唯一区别是在if条件中代替了i!= j的情况是arr [i]!= j。
3.当数组包含重复项时,按其值删除元素
在重复的情况下,根据值执行删除操作需要使用ArrayList。
由于ArrayList不需要现在预先设置大小,因此它允许我们动态扩展。
package com.theitroad.java; import java.util.ArrayList; import java.util.Arrays; public class Main { public static void main(String[] args) { int[] arr = new int[]{1,3,3,4,5}; ArrayList<Integer> arr_new = new ArrayList<>(); int j=3; for(int i=0;i<arr.length;i++){ if(arr[i]!=j){ arr_new.add(arr[i]); } } System.out.println("Before deletion :" + Arrays.toString(arr)); System.out.println("After deletion :" +arr_new); } }
4.移位同一数组中的元素
此方法涉及移动同一阵列中的元素。
元素的移动将替换下一个索引处要删除的元素。
package com.theitroad.java; import java.util.Arrays; public class Main { public static void main(String[] args) { int[] arr = new int[]{1,3,3,4,5}; int j=3; System.out.println("Before deletion :" + Arrays.toString(arr)); int count =0; for(int i = 0; i < arr.length; i++){ if(arr[i] == j){ count++; //shifting elements for(int k = i; k < arr.length - 1; k++){ arr[k] = arr[k+1]; } i--; //break; } } System.out.print("After Deletion :" ); for(int i = 0; i < arr.length-count; i++){ System.out.print(" " + arr[i]); } System.out.println(); System.out.println("Whole array :" + Arrays.toString(arr)); } }
Count变量指示删除的元素数。
该变量对于跟踪要打印数组的索引至关重要。
此方法也可以处理重复项。
5.从ArrayList中删除元素
ArrayList由数组支持。
直接删除ArrayList中的元素。
它需要对内置函数的一个简单调用。
package com.theitroad.java; import java.util.ArrayList; import java.util.Arrays; public class Main { public static void main(String[] args) { int[] arr = new int[]{1,3,3,4,5}; ArrayList<Integer> arr_new = new ArrayList<Integer>(); for (int i : arr) { arr_new.add(i); } arr_new.remove(3); System.out.println("Before deletion :" + Arrays.toString(arr)); System.out.println("After Deletion:" + arr_new); } }
调用remove(i)
函数将删除索引i处的元素。
与Arrays相比,ArrayLists中的删除相对容易一些。