黑马程序员技术交流社区

标题: 关于17-13中的小练习,请各位帮我看一下对不对 [打印本页]

作者: 陈中岩    时间: 2013-4-13 02:25
标题: 关于17-13中的小练习,请各位帮我看一下对不对
本帖最后由 陈中岩 于 2013-4-13 10:10 编辑

  1. /*
  2. * 练习,fill方法可以将list集合中所有元素替换成指定元素
  3. * 需求:将list集合中部分元素替换成元素
  4. */
  5. import java.util.*;
  6. class CollectionsTest2
  7. {
  8.                 public static void main(String[] args)
  9.                 {
  10.                         List<String> list = new ArrayList<String>();
  11.                         list.add("abcd");
  12.                         list.add("aaa");
  13.                         list.add("zz");
  14.                         list.add("kkkkk");
  15.                         
  16.                         fillTest(list,1,3,"qq");
  17.                 }
  18.                 //list:集合;start:开始的元素;end:结束元素,不包含end;str:指定元素
  19.                 public static void fillTest(List<String> list,int start,int end,String str)
  20.                 {
  21.                         try
  22.                         {
  23.                                 //获取角标start到end的元素,不包括end
  24.                                 List<String> al = list.subList(start,end);
  25.                                 sop("替换之前的元素:"+list);
  26.                                 //替换指定元素
  27.                                 Collections.fill(al,str);
  28.                         }
  29.                         //捕获范围异常
  30.                         catch(IndexOutOfBoundsException e)
  31.                         {
  32.                                 throw new IndexOutOfBoundsException("您输入的"+start+"~"+end+"范围有误");
  33.                         }
  34.         
  35.                         //打印输出
  36.                         sop("替换之后的元素:"+list);
  37.                 }
  38.                 public static void sop(Object obj)
  39.                 {
  40.                         System.out.println(obj);
  41.                 }      
  42. }
复制代码

作者: java冬冬    时间: 2013-4-13 03:18
楼主正解,替换的结果正确

作者: 黄玉昆    时间: 2013-4-13 08:13
楼主完全可以自己运行一下,就知道自己做的对不对了啊,建议你先运行一下,如果出问题了,自己解决不了了,再发帖提问,这样会更深刻哦,谢谢
作者: 陈中岩    时间: 2013-4-13 10:11
黄玉昆 发表于 2013-4-13 08:13
楼主完全可以自己运行一下,就知道自己做的对不对了啊,建议你先运行一下,如果出问题了,自己解决不了了, ...

回复版主,我是看到这个毕老师说让自己做,所以自己做出来想跟大家分享一下,不会做的可以一起讨论下,所以才发出来的。
作者: 黄玉昆    时间: 2013-4-13 10:39
陈中岩 发表于 2013-4-13 10:11
回复版主,我是看到这个毕老师说让自己做,所以自己做出来想跟大家分享一下,不会做的可以一起讨论下,所 ...

我也分享一个自己写的吧,希望有用:
  1. import java.util.*;
  2. public class Demo {
  3.         public static void main(String[] args) {
  4.                 // TODO Auto-generated method stub
  5.                 List<String> list = new ArrayList<String>();  
  6.         list.add("abd");  
  7.         list.add("cd");  
  8.         list.add("f");  
  9.         list.add("yyyy");  
  10.         list.add("abd");
  11.         fillPart(list, 1, 3, "11111");
  12.         System.out.println(list);
  13.         }
  14.         //替换部分字符
  15.         public static void fillPart(List<String> list,int start,int end,String str){
  16.                 //创建一个临时集合
  17.                 List<String> li = new ArrayList<String>();
  18.                 //对指定集合的指定位置元素变量并删除
  19.                 for(int i=start;i<end;i++){
  20.                         li.add(list.get(i));
  21.                         list.remove(list.get(i));
  22.                 }
  23.                 System.out.println("测试用-原集合被替换后的:" + list);
  24.                 //将要替换的内容加入临时集合中
  25.                 Collections.fill(li,str);
  26.                 //在原集合中插入新集合
  27.                 list.addAll(start, li);
  28.     }


  29. }
复制代码

作者: 陈中岩    时间: 2013-4-13 20:26
黄玉昆 发表于 2013-4-13 10:39
我也分享一个自己写的吧,希望有用:

谢谢,分享。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2