我们这次主要研究的是插入数据的问题,我们先明确一点,插入数据的本质是将原有的数据往后移动一定距离,给插入的数据腾出空间。
首先,我们最先考虑什么条件是允许插入数据的。插入的数据如果超出数组长度是否允许插入?我相信,在数据存储容器有限长度的下,是不允许插入的,当然如果是集合就不需要考虑这方面的问题。在这里我们也发现了,数组和集合区别之一,数组有固定长度,集合没有固定,而集合更符合实际情况,所以我们把数组的增删改查写完后,我们日后都会采用集合的方式进行代码编写
其次,是否满足插入条件。索引值或索引集是否超出范围,插入的内容是否符合数据类型或者对象。
接着,每次插入,尾部的元素或者元素群,都会被剔除一部分的(有限定长度的情况)
最后,我们根据插入内容的长度,分为两类,单个数据元素与多个数据元素群
下面是这次我们插入数据的代码:
(1) 插入元素
public static int[] insertElement(int arr[] , int index , int context){
if(index-1<len(arr)){
int t=arr[index-1];
arr[index-1]=context;
int s;
for(;index<len(arr);index++){
s = arr[index];
arr[index] = t;
t = s;
}
return arr;
}else {
System.out.println("索引超出范围");
return arr;
}
}
(2) 插入元素群体
public static int[] insertElements(int arr[] , int index , int context[]){
if(index-1<len(arr)&&len(context)<=(len(arr)-index)){
int times = 0;
int s = len(arr)-index+1;
int t = index-1;
int insertarr[] = new int[s];
for(int i=0;t<len(arr);t++,i++){
insertarr[i] = arr[t];
}
for(int i=0;i<len(context);index++,i++){
arr[index-1] = context[i];
}
t = index-1;
for(int i=0 ; t<len(arr) ; t++,i++){
arr[t] = insertarr[i];
}
return arr;
}else {
System.out.println("索引超出范围");
return arr;
}
}
(3) 测试
public static void main(String[] args) {
System.out.println("===================接下来是插入元素的方法验证=================");
int arr2[]= new int[10];
for(int i = 0 ; i<6 ;i++){
arr2[i]=i;
}
System.out.println("(没有充满元素的)原数组的内容:");
printlist(arr2);
System.out.println("\n我们在第二个位置插入数字9,新数组的内容:");
insertElement(arr2,2,9);
printlist(arr2);
for(int i = 0 ; i<len(arr2) ;i++){
arr2[i]=i;
}
System.out.println("\n(充满元素的)原数组的内容:");
printlist(arr2);
System.out.println("\n我们在第二个位置插入数字9,新数组的内容:");
insertElement(arr2,2,9);
printlist(arr2);
System.out.println("\n===================接下来是插入元素群的方法验证=================");
System.out.println("原数组的内容:");
printlist(arr2);
System.out.println("\n在第二个元素添加元素群体{8,0,1},新数组的内容:");
int a[] = {8,0,1};
arr2 = insertElements(arr2,2,a);
printlist(arr2);
System.out.println("\n原数组的内容:");
printlist(arr2);
System.out.println("\n在第6个元素添加元素群体{9,0,3,10},新数组的内容:");
int b[] ={9,0,3,10};
arr2 = insertElements(arr2,6,b);
printlist(arr2);
System.out.println("\n原数组的内容:");
printlist(arr2);
System.out.println("\n在第7个元素添加元素群体{1,1,1,1,1},新数组的内容:");
int c[] ={1,1,1,1,1};
arr2 = insertElements(arr2,7,c);
printlist(arr2);
}
另外呢,其实还有前插和尾插,这个大家可以根据实际情况自行选择,我这里都是特定位置的插入!