如何在 Java 中删除数组元素

当我们在Java中创建一个数组时,我们会指定其数据类型和大小,这是JVM用来分配对数组元素所需的内存。

1. 从 Array 删除一个元素使用 loop

我们可以使用 for loop来填充新的数组,而没有我们想要删除的元素。

 1package com.journaldev.java;
 2
 3import java.util.Arrays;
 4
 5public class Main {
 6
 7    public static void main(String[] args) {
 8        int[] arr = new int[]{1,2,3,4,5};
 9        int[] arr_new = new int[arr.length-1];
10        int j=3;
11        for(int i=0, k=0;i<arr.length;i++){
12            if(i!=j){
13                arr_new[k]=arr[i];
14                k++;
15            }
16        }
17        System.out.println("Before deletion :" + Arrays.toString(arr));
18        System.out.println("After deletion :" + Arrays.toString(arr_new));
19
20    }
21}

Arr Delete

代码删除索引中的元素 3 此方法简单地将除索引中的元素 3 以外的所有元素复制到新的数组中。

2. 通过其值删除一个数组元素

与以前的例子不同,此代码会根据其值删除元素,因为删除后必须知道数组的大小,这不会对重复工作。

 1package com.journaldev.java;
 2import java.util.Arrays;
 3
 4public class Main {
 5
 6    public static void main(String[] args) {
 7        int[] arr = new int[]{1,2,3,4,5};
 8        int[] arr_new = new int[arr.length-1];
 9        int j=3;
10        for(int i=0, k=0;i<arr.length;i++){
11            if(arr[i]!=j){
12                arr_new[k]=arr[i];
13                k++;
14            }
15        }
16        System.out.println("Before deletion :" + Arrays.toString(arr));
17        System.out.println("After deletion :" + Arrays.toString(arr_new));
18
19    }
20}

Arr Delete based on value

此和前一种情况之间的唯一区别是arr(i)!=j在 if 条件中,而不是i!=j

删除元素的值,当数组包含重复数时

在重复情况下执行基于值的删除需要使用 ArrayList. 由于 ArrayList 不需要现在的尺寸,它允许我们动态地扩展。

 1package com.journaldev.java;
 2
 3import java.util.ArrayList;
 4import java.util.Arrays;
 5
 6public class Main {
 7
 8    public static void main(String[] args) {
 9        int[] arr = new int[]{1,3,3,4,5};
10        ArrayList<Integer> arr_new = new ArrayList<>();
11        int j=3;
12        for(int i=0;i<arr.length;i++){
13            if(arr[i]!=j){
14                arr_new.add(arr[i]);
15
16            }
17        }
18        System.out.println("Before deletion :" + Arrays.toString(arr));
19        System.out.println("After deletion :" +arr_new);
20
21    }
22}

array-deletion-duplicates

4、在相同的数组中交换元素

此方法涉及在相同的数组中移动元素. 元素的移动取代了将被下一个索引中删除的元素。

 1package com.journaldev.java;
 2import java.util.Arrays;
 3public class Main {
 4
 5    public static void main(String[] args) {
 6        int[] arr = new int[]{1,3,3,4,5};
 7        int j=3;
 8        System.out.println("Before deletion :" + Arrays.toString(arr));
 9        int count =0;
10        for(int i = 0; i < arr.length; i++){
11            if(arr[i] == j){
12                count++;
13
14                // shifting elements
15                for(int k = i; k < arr.length - 1; k++){
16                    arr[k] = arr[k+1];
17                }
18                i--;
19               // break;
20            }
21        }
22
23        System.out.print("After Deletion :" );
24        for(int i = 0; i < arr.length-count; i++){
25            System.out.print(" " + arr[i]);
26        }
27        System.out.println();
28        System.out.println("Whole array :" + Arrays.toString(arr));
29
30    }
31}

计数变量表示删除的元素的数量. 此变量对于保持索引的跟踪至该数组应该打印为止至关重要。

Shifting Elements In Array

5、从 ArrayList 中删除元素

ArrayList是由数组支持的。在ArrayList中删除一个元素是向前进行的。

 1package com.journaldev.java;
 2import java.util.ArrayList;
 3import java.util.Arrays;
 4public class Main {
 5
 6    public static void main(String[] args) {
 7        int[] arr = new int[]{1,3,3,4,5};
 8        ArrayList<Integer> arr_new = new ArrayList<Integer>();
 9        for (int i : arr)
10        {
11            arr_new.add(i);
12        }
13        arr_new.remove(3);
14        System.out.println("Before deletion :" + Arrays.toString(arr));
15        System.out.println("After Deletion:" + arr_new);
16    }
17}

调用删除(i)函数将删除索引 i 的元素,与 Arrays 相比,在 ArrayLists 中删除比较容易。

ArrayList Deletion

结论

我们看到一些使用不同的方法删除数组中的元素的例子。在数组中删除一个元素和数组列表之间的区别是显而易见的。如果要再次删除,那么ArrayList应该被用来利用其内置的功能。

Published At
Categories with 技术
Tagged with
comments powered by Disqus