黑马程序员技术交流社区
标题:
集合框架的工作类,练习,求思路
[打印本页]
作者:
郭运川
时间:
2014-2-8 14:03
标题:
集合框架的工作类,练习,求思路
本帖最后由 郭运川 于 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);
}
作者:
panzhenglian
时间:
2014-2-9 14:18
collections.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);
}
public static void fill(List<String> list,String replace,int start,int end)
{ //replace == "pp",start == 2 , end == 3
while(start<end)//这里只会循环一次,因为第二次start == 3,end == 3;
{
String str = list.get(start); //str == "z"
Collections.replaceAll(list,str,replace);
//这句话的意思是将list集合中的所有值为"z"的元素替换成replace ,也就是"pp"
start++;
sop(start);//输出结果[abcd, aaa, pp, kkkkkk, qq, pp],是正确的
}
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
复制代码
作者:
2424308
时间:
2014-2-9 14:52
是将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);
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2