今天呢,我们来主要思考元素替换的问题。根据通过什么来快速锁定我们需要进行替换的元素或者元素群,我们有大概这两个思路,第一个是通过索引或者索引范围,第二个是通过原数组的元素或者元素群。
我们大概的思路定了下来,接下来就是在实际问题中,我们并不是要把全部的替换掉,只是替换第一个或者最后一个,那么这两个想法就是替换的延申;那么有人就会问了,如果我是想要替换第n(1<n<arr.length)个出现的呢,或者说是倒数第n(1<n<arr.length)个出现的呢;问得好,这个其实我们只要把替换第一个和最后一个的代码解决了,基本的都没啥差别的咧。
根据第一个思路——通过原数组的元素或者元素群来进行具体思考,我们是因为有要替换的元素,才进行替换,所以如果没有,我们就应该不替换;这里有人就会问了,如果实在是不知道原数组有什么元素值该怎么办,那么我们就在方法里面加一个所谓的条件判断。只要能检索到原数组里面是否有这个元素或者元素群,才进行替换。
根据第二个思路——通过索引或者索引范围来进行具体思考,索引、索引,原则很简单,不能超出原数组的数组长度即可进行替换。
下面是这次替换的四个方法代码
(1)根据索引,替换元素内容
public static int[] replaceLocationE(int arr[],int index , int context ){ if(index<len(arr)){ arr[index]=context; return arr; }else { return null; } }
(2) 根据元素内容,替换元素内容
public static int[] Old_Replace_News(int arr[] , int old , int news){ if(boolElement(arr,old)){ for(int i = 0 ; i<len(arr) ; i++){ if(arr[i]==old){ arr[i]=news; } } }else { System.out.println("没有相关的元素内容进行匹配"); } return arr; }
(3) 根据元素群索引范围,替换元素群内容
public static int[] replaceLocationEs(int arr[],int start,int end , int news[] ){ int j=0; for(int i=start ; i<end;i++){ arr[i]=news[j]; } return null; }
(4) 根据元素群内容,替换元素内容
public static int[] Old_Replace_News(int arr[] , int olds[] ,int news[]){ if(boolElements(arr,olds)){ int arrl = len(arr); int oldsl = len(olds); int newsl = len(news); for(int j=0 ; j<arrl-oldsl ; j++){ int i; int x=j; int count=1; for(i=0;i<oldsl;i++){ if(olds[i]==arr[x++]){ count++; if(count==oldsl){ for(int t=0;t<newsl;t++){ arr[j++]=news[t]; } } }else { break; } } } }else { System.out.println("没有相关的元素群内容进行匹配"); } return arr; }
(5) 测试结果
public static void main(String[] args) { /** System.out.println("接下来我们创造了一个数组,进行实验"); int arr[] = {0,1,2,3,4,5,6,7,8,9}; System.out.println("让我们康康它有多少长度:"); System.out.println(len(arr)); System.out.println("===================================="); System.out.println("接下来我们看看里面有什么吧!"); printlist(arr); System.out.println("\n===================================="); System.out.println("接下来是索引元素了"); System.out.println("我要索引第一个:"+printElemnt(arr,0)); System.out.println("我要索引第十一个:"+printElemnt(arr,11)); System.out.println("===================================="); System.out.println("接下来是索引元素群体"); System.out.print("索引第一个到第四个:"); printlist(printElements(arr,1,4)); System.out.print("\n索引第五个到第四个:"); printlist(printElements(arr,5,4)); System.out.print("索引第一个到第十一个:"); printlist(printElements(arr,0,11)); System.out.println("===================================="); System.out.println("查询数字1是否存在:"+boolElement(arr,1)); System.out.println("查询数字13是否存在:"+boolElement(arr,14)); System.out.println("===================================="); int a[] = {1,2,3}; int b[] = {3,6,9}; System.out.println("查询数组{1,2,3}在不在arr里:"+boolElements(arr,a)); System.out.println("查询数组{3,6,9}在不在arr里:"+boolElements(arr,b)); */ int arr[] = {0,1,2,3,4,5,6,7,8,9}; System.out.println("===================接下来是替换元素的方法验证================="); System.out.println("原数组的内容:"); printlist(arr); System.out.println("\n根据索引值进行替换的原理,我们把第1个元素内容替换成11之后,新数组的内容:"); arr = replaceLocationE(arr,0,11); printlist(arr); System.out.println("\n原数组的内容:"); arr = replaceLocationE(arr,1,11); printlist(arr); System.out.println("\n根据元素内容进行替换的原理,我们把元素内容为11的替换成元素内容为1,新数组的内容:"); arr = Old_Replace_News(arr,11,1); printlist(arr); System.out.println("\n===================接下来是替换元素群的方法验证================="); int olds[] = {2,3,4}; int news[] = {4,3,2}; System.out.println("原数组的内容"); printlist(arr); System.out.println("\n根据元素群内容进行替换的原理,我们把元素群内容为{2,3,4}替换成为{4,3,2},新数组的内容为:"); arr = Old_Replace_News(arr,olds,news); printlist(arr); System.out.println("\n原数组的内容:"); printlist(arr); System.out.println("\n根据索引值范围进行替换的原理,我们把范围从5到8的进行替换为{2,3,4},新数组的内容为:"); int start = 5; int end = 8; arr = replaceLocationEs(arr,start,end,news); printlist(arr); }