当我们在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}
代码删除索引中的元素 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(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}
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}
计数变量表示删除的元素的数量. 此变量对于保持索引的跟踪至该数组应该打印为止至关重要。
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应该被用来利用其内置的功能。