Java数组的插入操作
一、自定义插入方法
1.编程思路
- 设置insert()方法,传入三个参数:要插入元素的数组、要插入元素的位置、要插入的元素(本题元素均设为整数);
- 因为数组是固定长度的存储空间且不能扩展空间,所以重新开辟一个空间大小 + 1 的数组空间,作为插入元素后的新数组;
- 根据要插入元素的位置参数,将参数前的元素保持不动,插入位及其后的元素均要向后移一位;
- 将要插入的数放进参数所给定的新数组下标位置,新数组生成,将新数组作为返回值返回,insert()功能实现。
2.实操代码
import java.util.Arrays;
/**
* ClassName: TestArrayInsert1
* Description:
* 数组插入元素 数组删除元素
* 扩展:可以使用System.arraycopy方法 实现插入效果
* @Author Ethan-TYQ
* @Create 2023/8/4 18:29
* @Version 1.0
*/
public class TestArrayInsert1 {
public static void main(String[] args) {
int [] arr = {342,23,4,43,3};
// int num = 0;
// int position = 0;
// Scanner input = new Scanner(System.in);
// System.out.println("请输入要交换的位数:");
// position = input.nextInt();
// System.out.println("请输入要交换的数字");
// num = input.nextInt();
int [] newArr;
// newArr = new int[arr.length + 1];
// newArr = insert(arr, position, num);
newArr = insert(arr, 3, 34);//实际操作时直接手动在代码中设置第二、三个参数,第二个参数直接作为下标来调整
System.out.println(Arrays.toString(newArr));
}
/**
* 自定义数组插入方法
* @param oldArr 操作的数据
* @param index 插入元素的位置(简称“插入下标”)
* @param num 插入的元素
* @return 新的数组
*/
public static int[] insert(int [] oldArr,int index,int num) {
//下标不能小于0或者大于数组的长度
if (index < 0 || index > oldArr.length) { //如果脚标小于0或大于原有数组的长度,则输入位置输入有误的提示
System.out.println("下标输入不合法");
// 如果下标不合法 则将传入的数组 直接返回 表示没有做任何操作
return oldArr;
}
// 代码执行到这里 表示下标没问题
// 准备一个长度+1的数组 用于插入元素
int[] newArr = new int[oldArr.length + 1];
// 遍历开始移动元素
for (int i = 0; i < oldArr.length; i++) {
//情况1 小于插入下标 则直接复制到新数组中
if (i < index) {
// int temp = newArr[i];
newArr[i] = oldArr[i];
} else { // 情况2 大于或者等于插入下标 则移动到新数组的+1位置
newArr[i + 1] = oldArr[i];
}
}
//空缺位置插入指定的的元素
newArr[index] = num;
return newArr; //将新数组返回
}
}