本帖最后由 神之梦 于 2013-6-10 13:17 编辑
直接上代码好了,这是在基础视频中老师出的小练习,后来找了下,发现好像老师没有讲怎么去实现。然后自己用非常愚蠢的方法没有成功,看了玉圣的思路后,自己做了下。期间发现代码会出现角标越界的可能,稍微改下代码已经可以完美实现了,现与大家共享下。。。。。
肯定还有不同的思路,如果还有更简单的思路,望大家分享。- /*
- 需求:使用Collections中的方法fill对List集合中的部分元素进行替换
- 思路:1、将List集合中要替换的部分元素取出,并存入另一集合中
- 2、将原集合中的要替换元素移除
- 3、用fill将要替换的元素进行替换
- 4、将取出的部分增加进集合
- */
- import java.util.*;
- class FillTest
- {
- public static void main(String[] args)
- {
- List<String> list = new ArrayList<String>();
- list.add("abc");
- list.add("ab");
- list.add("abcd");
- list.add("a");
- list.add("abcde");
- try
- {
- fillSome(list,1,5,"shenma");
- }
- catch (InputException e)
- {
- System.out.println(e.toString());
- }
- System.out.println(list);
- }
- //替换部分元素方法
- public static void fillSome(List<String> list,int start,int end,String s)throws InputException
- {
- if(start>=end)
- throw new InputException("没有要替换的元素");//如果输入的end小于或者等于start,则抛出异常
- //定义一个新集合
- List<String> li=new ArrayList<String>();
- //因为每移除一次,后面的元素就会补上,所以这里用y来控制次数
- for (int x=start,y=start;y<end ; y++)
- {
- li.add(list.get(x));//将需要替换的元素增加到新集合
- list.remove(x);//移除需要替换的元素
- }
-
- Collections.fill(li,s);//替换成需要的元素s
-
- list.addAll(start,li);//将替换的部分增加进原集合
- }
- }
- //自定义异常
- class InputException extends Exception
- {
- InputException(String Massage)
- {
- super(Massage);
- }
- }
复制代码 |