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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭运川 中级黑马   /  2014-2-8 14:03  /  990 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郭运川 于 2014-2-9 15:44 编辑

/*
        练习:fill方法可以将list集合中所有元素替换成指定元素
        将list集合中部分元素替换成指定元素
        fill(List<String> list,int start,int end)
        */
需求fill(List<String> list,int start,int end)的复写方法
我选择调用replaceAll方法在一定程度上完成了练习的要求,但是这种方法会把不在修改范围内的并且在修改范围内
有相同对象的对象也一起修改。例如修改2,4时,会把最后一个"z"和前面的”z"都修改。
class CollectionsDemo2  
{
        public static void main(String[] args)
        {
                fillDemo();
        }
        
        public static void fillDemo()
        {
                List<String> list = new ArrayList<String>();

                list.add("abcd");
                list.add("aaa");
                list.add("z");
                list.add("kkkkkk");
                list.add("qq");
                list.add("z");

                sop(list);
                fill(list,"pp",2,3);
                sop(list);
        }
        public static void fill(List<String> list,String replace,int start,int end)
        {
                while(start<end)
                {
                        String str = list.get(start);
                        Collections.replaceAll(list,str,replace);
                        start++;
                        sop(start);
                }
        }

        public static void sop(Object obj)
        {
                System.out.println(obj);
        }

2 个回复

倒序浏览
collections.replaceAll的意思是 使用另一个值替换列表中出现的所有某一指定值。不知道楼主需要的效果是什么,希望我的注解能给楼主带来帮助
  1. class CollectionsDemo2  
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 fillDemo();
  6.         }
  7.         
  8.         public static void fillDemo()
  9.         {
  10.                 List<String> list = new ArrayList<String>();

  11.                 list.add("abcd");
  12.                 list.add("aaa");
  13.                 list.add("z");
  14.                 list.add("kkkkkk");
  15.                 list.add("qq");
  16.                 list.add("z");

  17.                 sop(list);
  18.                 fill(list,"pp",2,3);
  19.                 sop(list);
  20.         }
  21.         public static void fill(List<String> list,String replace,int start,int end)
  22.         {                                                                                //replace == "pp",start == 2 , end == 3
  23.                
  24.                 while(start<end)//这里只会循环一次,因为第二次start == 3,end == 3;
  25.                 {
  26.                         String str = list.get(start);  //str == "z"
  27.                         Collections.replaceAll(list,str,replace);
  28.                         //这句话的意思是将list集合中的所有值为"z"的元素替换成replace ,也就是"pp"
  29.                         start++;
  30.                         sop(start);//输出结果[abcd, aaa, pp, kkkkkk, qq, pp],是正确的
  31.                 }
  32.         }

  33.         public static void sop(Object obj)
  34.         {
  35.                 System.out.println(obj);
  36.         }
  37. }
复制代码

回复 使用道具 举报
是将list集合中部分元素替换成指定元素,所以不能用replaceAll

class CollectionsDemo2 {
        public static void main(String[] args) {
                fillDemo();
        }
        public static void fillDemo(){
                List<String> list = new ArrayList<String>();

                list.add("abcd");
                list.add("aaa");
                list.add("z");
                list.add("kkkkkk");
                list.add("qq");
                list.add("z");

                sop(list);
                fill(list,"pp",2,3);
                sop(list);
                //输出的接过为
                //[abcd, aaa, z, kkkkkk, qq, z]
               // [abcd, aaa, pp, pp, qq, z]
        }
        public static void fill(List<String> list,String replace,int start,int end){   
              for(int i=start;i<=end;i++){
                              list.set(i, replace);
              }
        }
        public static void sop(Object obj){
                System.out.println(obj);
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马