在指定位置插入指定元素
情景分析:
- 插入下标位置需符合数组下标(数组容量-1)。
- 插入指定元素不能覆盖原数组其它数据,即插入位置后的数据需要向后移动。
代码实例:
public class Add {
public static void main(String[] args) {
int[] arr = {1, 3, 5, 7, 9, 11, 13, 15, 17, 0};
int index = 0;//在下标位置添加
int insert = 50;//添加数数值
if (index < 0 || index > arr.length - 1) {
System.out.println("指定下标不合法");
return;
}
//使用for循环对数组中其他数据进行移动操作
//具体操作为将添加位置的数据整体后移
// for 循环中 使用i为局部变量
//代码为 arr[i] = arr[i - 1]; 前值给后值
// i = arr.length - 1; 数组中下标从0开始
for (int i = arr.length - 1; i > index; i--) {
arr[i] = arr[i - 1];
}
//将数值引入腾出的位置
arr[index] = insert;
System.out.println(Arrays.toString(arr));
}
}
执行结果:
[50, 1, 3, 5, 7, 9, 11, 13, 15, 17]
删除数组中指定下标元素
情景分析:
- 删除下标位置需符合数组下标(数组容量-1)。
- 删除指定元素后,原数据为无效元素0,删除位置后的数据需要向前移动。
代码实例:
public class Delete {
public static void main(String[] args) {
int[] arr = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
int index = 0;
if (index > arr.length - 1 || index < 0 ) {
System.out.println("指定位置不合法");
return;
}
//将删除位置之后的数据整体向前移动
for (int i = index; i < arr.length - 1; i++) {
arr[i] = arr[i + 1];//后值给前值
}
//将最后一个数据赋值为0
arr[arr.length - 1] = 0;
System.out.println(Arrays.toString(arr));
}
}
执行结果:
[3, 5, 7, 9, 11, 13, 15, 17, 19, 0]
找出指定元素在指定数组中所有下标位置
情景分析:
- 查询数组中某个数据很简单,使用if判断就可以了,但是该如何储存结果并能实现自动处理。
代码实例:
public class Inquire {
public static void main(String[] args) {
// 目标数组
int[] arr = {1, 2, 3, 1, 2, 3, 1, 2, 3, 1};
// 目标查询数据
int find = 1;
// 存储下标的数组 下标为int类型,容量和原数组容量一致(查询数据与数组数据相同最大个数为原数组容量)。
// 使用该数组用来保存与查询数据相同的数组数据下标位置
int[] indexArr = new int[arr.length];//此时该数组全为0
/*
1. 准备一个变量,来记录下一次存储数据的位置
同时count也是记录当前找到的目标数据次数
【有效元素个数】
*/
int count = 0;
// 2. for 循环遍历数组,找出和目标数据 find 一致的内容,
// 保存下标位置到indexArr中
for (int i = 0; i < arr.length; i++) {
// 需要保存 i 对应数据
if (find == arr[i]) {
indexArr[count] = i;
count += 1;//每次存入下标后,count自增数据可存入下一个位置
System.out.println(Arrays.toString(indexArr));//展示每次相同时,输入的下标位置
}
}
// 3. 展示结果
for (int i = 0; i < count; i++) {
System.out.println(indexArr[i]);//展示数组中有效数据
}
System.out.println(Arrays.toString(indexArr));//展示数组
}
}
执行结果:
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 3, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 3, 6, 0, 0, 0, 0, 0, 0, 0]
[0, 3, 6, 9, 0, 0, 0, 0, 0, 0]
0
3
6
9
[0, 3, 6, 9, 0, 0, 0, 0, 0, 0]
Process finished with exit code 0