黑马程序员技术交流社区
标题:
Collections工具类中fill方法部分替换的小练习
[打印本页]
作者:
神之梦
时间:
2013-6-10 13:13
标题:
Collections工具类中fill方法部分替换的小练习
本帖最后由 神之梦 于 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);
}
}
复制代码
作者:
许庭洲
时间:
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
for (int x=start,y=start;y<end ; y++)
{
li.add(list.get(x));//将需要替换的元素增加到新集合
list.remove(x);//移除需要替换的元素
}
复制代码
这里面的x,y到底起什么作用?x应该也自增吧,我按照您的代码写的,结果出现错误了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2