package com.practice.demo;
import java.util.ArrayList;
/**
* 定义一个replaceAll方法,将传入的新值替换集合中的老值(list,old,new)
*
* @author Janny
*
*/
public class Practice6 {
public static void main(String[] args) {
// 创建一个集合对象
ArrayList<String> list = new ArrayList<String>();
ArrayList<String> newl = new ArrayList<String>();
ArrayList<String> old = new ArrayList<String>();
// 给集合对象赋值
list.add("sss");
list.add("ee");
list.add("qq");
list.add("ii");
old.add("qq");
old.add("ii");
newl.add("kk");
newl.add("q");
// 调用替换方法
replaceAll(list, old, newl);
// 打印结果
printArr(list);
}
private static void printArr(ArrayList<String> list) {
for (String string : list) {
System.out.println(string);
}
}
private static void replaceAll(ArrayList<String> list,
ArrayList<String> old, ArrayList<String> newl) {
/*
* 若存在则用现有字符串将原字符串替换:
* 1、先比较老字符串的第n个在list中的位置,如果相同进入第二步;
* 否则将下标+1,在进行比较;
* 2、在将老字符串下标+1进行比较,重复第一步
*/
int ind = 0;
int index = 0;
for (int i = 0; i < list.size() - old.size(); i++) {
// 内层循环对old字符串和list中的元素进行比较
for (int j = 0; j < old.size(); j++) {
index = list.indexOf(old.get(j));
if (index < 0) {
break;
} else {
ind = j;
continue;
}
}
// 当比较的结果是
if (ind + 1 == old.size()) {
break;
}
}
/*
* 当比较完元素的长度和ind相等时,说明已经找到相应的元素,
* 将新元素复制给老元素
*/
if (ind + 1 == old.size()) {
for (int i = 0; i < newl.size(); i++) {
list.set(index - old.size() + i, newl.get(i));
}
}
}
}
|
|