如何在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中的删除相对容易一些。

