A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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));
                        }
                }
        }
}

2 个回复

倒序浏览
{:3_66:}{:3_66:}{:3_66:}
回复 使用道具 举报
正在纠结这个题。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马