今天呢,我们来主要思考元素替换的问题。根据通过什么来快速锁定我们需要进行替换的元素或者元素群,我们有大概这两个思路,第一个是通过索引或者索引范围,第二个是通过原数组的元素或者元素群。
我们大概的思路定了下来,接下来就是在实际问题中,我们并不是要把全部的替换掉,只是替换第一个或者最后一个,那么这两个想法就是替换的延申;那么有人就会问了,如果我是想要替换第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);
}

本文探讨了如何在数组中进行元素或元素群的替换,提出了通过索引和元素内容两种策略。提供了四个替换方法的代码实现,包括按索引替换、按元素内容替换、按元素群索引范围替换和按元素群内容替换。并通过示例测试了这些方法的有效性。
1143

被折叠的 条评论
为什么被折叠?



