Java中删除与增加数组元素
2021-11-23 10:08:10

Java中删除数组元素

思路

找到所需要删除的数组元素的下标值,将后一位的值覆盖到前一位,最后一位使用0进行代替,这样会导致数组并没有完全的充满元素,即可能会少一个元素。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Arrays;

public class DelShuZu {
public static void main(String[] args) {
int a[] = {10,20,5,9,11};
int i;
for(i=2;i<4;i++) //从下标2的元素开始进行循环
{
a[i] = a[i+1]; //每次循环后一位的值将赋给前一位
//System.out.println(a[i]);
}
a = Arrays.copyOf(a,a.length-1); //复制给新的数组-1
for (int j : a) {
System.out.print(j+" ");
}
}
}
输出结果:10 20 9 11

这里使用a[i]=a[i+1]对所需要覆盖的元素进行后一位向前的覆盖,保留覆盖的前几位元素,并且,使用Arrays.copyof()对数组进行新的创建,并将值传入,当此语句除去之后 输出结果将会将数组最后一个元素的值多输出一次,则输出两次11。利用这条语句将数组的元素值除去1,则正常输出。

Java中增加数组元素

思路

看需求分为增加的元素是否需要排序,如果不需要排序则扩容数组,将值插入,需要则是多出一个排序步骤。

非排序代码(直接加在末尾):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.Arrays;
import java.util.Scanner;

public class PaiXuAdd {
public static void main(String[] args) {
int num[] = {1,3,5,6,7,9};
Scanner in = new Scanner(System.in);
System.out.print("Input Num:");
int Num = in.nextInt();
num = Arrays.copyOf(num,num.length+1); //复制新的数组+1
num[num.length-1] = Num; //将输入的值赋值给数组的最后一位
for (int x:num) {
System.out.print(x);
};
}
}

复制数组为新数组,将值直接赋值到最后一位上,注意此处不可将数值赋值给其他位。

排序代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.Arrays;
import java.util.Scanner;

public class PaiXuAdd {
public static void main(String[] args) {
int num[] = {1,3,5,6,7,9};
Scanner in = new Scanner(System.in);
System.out.print("Input Num:");
int Num = in.nextInt();
num = Arrays.copyOf(num,num.length+1);
num[num.length-1] = Num;
int i = 0;
if(num[i] <= num[num.length-2])
{
Arrays.sort(num); //排序
}
for (int x:num) {
System.out.print(x);
};
}
}

与非排序相比,增加了Arrays.sort()进行排序,在if语句的条件中可以使用其他的排序方式达到所需要的元素排序。

非排序加在指定下标位:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.util.Arrays;
import java.util.Scanner;

public class PaiXuAdd {
public static void main(String[] args) {
int num[] = {1,3,5,6,7,9};
int Addnum[] = new int[7]; //创建新的数组用于存放元素
Scanner in = new Scanner(System.in);
System.out.print("Input Num:");
int Num = in.nextInt();
for (int a=0;a<2;a++)
{
Addnum[a] = num[a]; //将指定下标前面不变的数组复制进新的数组
}
for (int a=2;a<num.length;a++)
{
Addnum[a+1] = num[a]; //将指定下标后面不变的地方复制进新的数组
}
Addnum[2] = Num; //将输入的值传入指定下标
for (int x:Addnum) {
System.out.print(x);
};
}
}

完成此项操作时,要考虑到增加元素可能越界,所以创建新的数组进行元素存放,使用拼接的方式完成操作。

总结

相对于C/C++来说,Java对数组的处理相对繁琐,目前学到静态数组的感觉是这样的,或许学到了动态数组会有不一样的感觉。