今天我们主要解决的是数据删除的问题,同样的我们需要考虑到以下几个问题:
(1) 根据什么原则进行删除
这里有两种思路,根据索引或者索引范围进行删除,根据元素或者元素群内容进行删除,
(2) 删除后,数组的元素排列
在实际生活中,删除后的新队列,需要对前面的数据进行填充
(3) 满足什么条件进行删除
对于元素来讲,需要存在才可以进行删除;对于索引来说,不能超出索引范围
理清楚这几个问题,那么接下来就是我的代码展示(为了方便,我这里采用了包装类),将之前的代码进行了小部分的修改:
第一部分,修改的代码(这里对需要运用的代码进行了修改)
//这个是用来遍历数组
public static void printlist(Integer arr[]){
if(arr!=null){
int length = arr.length;
int i;
for(i=0 ; i<length ;i++){
System.out.print(arr[i]+" ");
}
}else {
System.out.println("null");
}
}
//这个是用来索引元素的
public static Integer printElemnt( Integer arr[],int i){
if (i<= arr.length) {
return arr[i];
}else {
return null;
}
}
//判断该元素是否存在
public static boolean boolElement(Integer arr[] , int i){
boolean t = false;
for(int j=0 ; j<arr.length ; j++){
if(i==printElemnt(arr,j)){
t = true;
break;
}
}
return t;
}
public static boolean boolElements(Integer arr[] , Integer a[]){
boolean t = false;
int arrl = arr.length;
int al = a.length;
for(int j=0 ; j<arrl-al ; j++){
int i;
int x=j;
for(i=0;i<al;i++){
if(a[i]==arr[x++]){
if(i==(al-1)){
t = true;
}
}else {
break;
}
}
}
return t;
}
第二部分,删除元素群
//删除元素(根据元素索引进行删除)
public static Integer[] delete_Elements_local(Integer arr[] , int start , int end){
int length = end-start;
if(length<arr.length&&start<end){
for(int i = start-1 ; i<=end-start;i++){
arr[i] = null;
}
return arr;
}else {
System.out.println("索引超出范围或者索引大小不正确");
return arr;
}
}
//删除元素(根据元素内容进行删除)
public static Integer[] delete_Elements_context(Integer arr[] , Integer context[]){
int len1 = arr.length;
int len2 = context.length;
if(boolElements(arr,context)){
for(int i=0; i<len1-len2;i++){
int s = i;
int times = 0;
for(int j=0;j<len2;j++){
if(arr[s++]==context[j]){
times++;
}
}
s = i;
if(times==len2){
for(int j=0;j<len2;j++){
arr[s++]=null;
}
}
}
Integer newarr[] = new Integer[arr.length];
for(int j = 0 ,i=0; j< arr.length;j++ ){
if(arr[j]!=null){
newarr[i++]=arr[j];
}
}
return newarr;
}else {
System.out.println("元素群不在原数组里面");
}
return null;
}
第三部分,删除元素
//删除元素(根据元素索引进行删除)
public static Integer[] delete_Element_local(Integer arr[] , int index){
if(index<= arr.length){
arr[index-1] = null;
for(; index<= arr.length-1;index++){
arr[index-1] = arr[index];
}
arr[index-1] = null;
return arr;
}else {
System.out.println("超出索引范围");
return arr;
}
}
//删除元素(根据元素内容进行删除)
public static Integer[] delete_Element_context(Integer arr[] , int context){
if(boolElement(arr,context)){
int index=-1;
Integer other[] = new Integer[arr.length];
for(int i =0 ; i<arr.length ; i++){
if(arr[i]==Integer.valueOf(context)){
arr[i] = null;
if(index==-1){
index=i;
}
}
}
for(int t = index , j=0 ; t< arr.length;t++){
if(arr[t]==null){
continue;
}else {
other[j++]=arr[t];
arr[t]=null;
}
}
for(int t=index,j=0 ; t< arr.length;t++,j++){
arr[t] = other[j];
}
return arr;
}else {
System.out.println("该元素不存在");
return arr;
}
}
第四部分,测试代码
public static void main(String[] args) {
System.out.println("\n===================接下来是删除元素群的方法验证=================");
Integer arr[] = new Integer[10];
for(int i=1;i< arr.length-3;i++){
arr[i-1] = i;
}
System.out.println("原数组的内容:");
printlist(arr);
int start = 2;
int end = 5 ;
arr = delete_Elements_local(arr,start,end);
System.out.println("\n根据索引范围,将第二个到第四个元素去除,新数组的内容是:");
printlist(arr);
Integer arr2[] = new Integer[10];
arr2[0] = 1;
arr2[1] = 2;
arr2[2] = 1;
arr2[3] = 2;
arr2[4] = 2;
Integer replace[] = new Integer[2];
replace[0] = 1;
replace[1] = 2;
System.out.println("\n原数组的内容为:");
printlist(arr2);
System.out.println("\n根据元素群的内容进行删除,将元素群为{1,2}的进行删除,新数组的内容为:");
arr2 = delete_Elements_context(arr2,replace);
printlist(arr2);
/**
Integer arr[] = new Integer[10];
for(int i=1;i< arr.length-3;i++){
arr[i-1] = i;
}
System.out.println("===================接下来是删除元素的方法验证=================");
System.out.println("原数组的内容:");
printlist(arr);
System.out.println("\n根据索引进行删除元素,删除第4个数,新数组的内容:");
arr = delete_Element_local(arr, 4);
printlist(arr);
System.out.println("\n原数组的内容:");
arr[3]=1;
printlist(arr);
System.out.println("\n根据索引的内容进行删除元素,删除元素内容为1的元素,新数组的内容:");
arr = delete_Element_context(arr,1);
printlist(arr);
*/
}
}
这四天时间,我们通过数组大致完成了增删改查的部分,在这里有还有很多很多的功能没有考虑到的、没有实现。在今后的日子里,会慢慢的实现它们.另外,全部代码也已经上传到我的资源了,大家可以去查看的哦!也谢谢大家的支持,会不断进步的