黑马程序员技术交流社区

标题: Collections工具类中fill方法部分替换的小练习 [打印本页]

作者: 神之梦    时间: 2013-6-10 13:13
标题: Collections工具类中fill方法部分替换的小练习
本帖最后由 神之梦 于 2013-6-10 13:17 编辑

直接上代码好了,这是在基础视频中老师出的小练习,后来找了下,发现好像老师没有讲怎么去实现。然后自己用非常愚蠢的方法没有成功,看了玉圣的思路后,自己做了下。期间发现代码会出现角标越界的可能,稍微改下代码已经可以完美实现了,现与大家共享下。。。。。
肯定还有不同的思路,如果还有更简单的思路,望大家分享。
  1. /*
  2. 需求:使用Collections中的方法fill对List集合中的部分元素进行替换
  3. 思路:1、将List集合中要替换的部分元素取出,并存入另一集合中
  4.           2、将原集合中的要替换元素移除
  5.           3、用fill将要替换的元素进行替换
  6.           4、将取出的部分增加进集合
  7. */
  8. import java.util.*;
  9. class  FillTest
  10. {
  11.         public static void main(String[] args)
  12.         {
  13.                 List<String> list = new ArrayList<String>();

  14.                 list.add("abc");
  15.                 list.add("ab");
  16.                 list.add("abcd");
  17.                 list.add("a");
  18.                 list.add("abcde");

  19.                 try
  20.                 {
  21.                         fillSome(list,1,5,"shenma");
  22.                 }
  23.                 catch (InputException e)
  24.                 {
  25.                         System.out.println(e.toString());
  26.                 }
  27.                 System.out.println(list);
  28.         }
  29. //替换部分元素方法
  30.         public static void fillSome(List<String> list,int start,int end,String s)throws InputException
  31.         {
  32.                 if(start>=end)
  33.                         throw new InputException("没有要替换的元素");//如果输入的end小于或者等于start,则抛出异常

  34.                 //定义一个新集合
  35.                 List<String> li=new ArrayList<String>();

  36.                 //因为每移除一次,后面的元素就会补上,所以这里用y来控制次数
  37.                 for (int x=start,y=start;y<end ; y++)
  38.                 {
  39.                         li.add(list.get(x));//将需要替换的元素增加到新集合
  40.                         list.remove(x);//移除需要替换的元素
  41.                 }
  42.                
  43.                 Collections.fill(li,s);//替换成需要的元素s
  44.                
  45.                 list.addAll(start,li);//将替换的部分增加进原集合
  46.         }

  47. }

  48. //自定义异常
  49. class InputException extends Exception
  50. {
  51.         InputException(String Massage)
  52.         {
  53.                 super(Massage);
  54.         }
  55. }
复制代码

作者: 许庭洲    时间: 2013-6-11 09:11
值得学习ing!
作者: 袁梦希    时间: 2013-6-11 12:40
灰常给力
作者: 神之梦    时间: 2013-6-11 12:45
许庭洲 发表于 2013-6-11 09:11
值得学习ing!

黑马帝啊,膜拜
作者: jiang_ming    时间: 2014-5-21 09:53
真不错,还有异常的处理,给力
作者: jiang_ming    时间: 2014-5-21 10:09
  1. for (int x=start,y=start;y<end ; y++)
  2.                 {
  3.                         li.add(list.get(x));//将需要替换的元素增加到新集合
  4.                         list.remove(x);//移除需要替换的元素
  5.                 }
复制代码
这里面的x,y到底起什么作用?x应该也自增吧,我按照您的代码写的,结果出现错误了






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