黑马程序员技术交流社区

标题: 关于Collections中的疑惑???求大虾解答…… [打印本页]

作者: 彭波    时间: 2013-3-16 10:32
标题: 关于Collections中的疑惑???求大虾解答……
本帖最后由 黄玉昆 于 2013-3-16 23:22 编辑

/*
  下面的程序是用fill方法可以将list集合中所有元素替换成指定元素。
*/
import java.util.*;
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("zz");
  list.add("kkkkkk");
  
  sop(list);//输出list
  
  Collections.fill(list, "pp");//fill方法可以将list集合中所有元素替换成指定元素。
  sop(list);//输出替换后的list
  
}
public static void sop(Object obj)
{
  System.out.println(obj);
}
}
问题: 试将list集合中部分元素替换成指定元素???
作者: renhao0118    时间: 2013-3-16 10:53
那要看你要替换哪些元素了,比如你要替换list中的第3个元素就是:list[2]="pp",不知道你说的部分元素指什么,如果需要的话,你可以设定一个规则,如果list中的元素不符合这个规则就把他们替换成你想要的string字符串。
作者: 彭波    时间: 2013-3-16 11:19
renhao0118 发表于 2013-3-16 10:53
那要看你要替换哪些元素了,比如你要替换list中的第3个元素就是:list[2]="pp",不知道你说的部分元素指什 ...

不对,list<String> 已经被泛型限定为String类型了,不是数组类型的,你把这个语句添加上去会报错的
作者: 孙晋学    时间: 2013-3-16 11:47
没在API中找到替换部分元素的方法,不过你可以遍历时指定条件,替换元素,也就是 修改
  1. List<String> list = new ArrayList<String>();
  2.   list.add("abcd");
  3.   list.add("aaa");
  4. ListIterator<String> li = list.listIterator<String>();
  5. while(li.hasNext()){
  6.       if(li.next().equals(" XXX"))//指定某个条件
  7.            li.set("XX");     //按要求修改元素
  8. }
复制代码

作者: TK13761    时间: 2013-3-16 12:24
局部替换可以自己编个方法 下面代码亲测可运行
  1. import java.util.*;
  2. class CollectionsDemo2
  3. {
  4. public static void main(String[] args)
  5. {
  6.   fillDemo();
  7. }

  8. public static void fillDemo()
  9. {
  10.   List<String> list = new ArrayList<String>();
  11.   
  12.   list.add("abcd");
  13.   list.add("aaa");
  14.   list.add("zz");
  15.   list.add("kkkkkk");
  16.   
  17.   sop(list);//输出list
  18.   
  19.   Collections.fill(list, "pp");//fill方法可以将list集合中所有元素替换成指定元素。
  20. sop(list);
  21.   getList(list,0,3,"tt"); //______-----------> 注意此处亲,调用局部置换算法 替换前几个值为 tt
  22.   sop(list);//输出替换后的list
  23.   
  24. }
  25. public static void sop(Object obj)
  26. {
  27.   System.out.println(obj);
  28. }
  29. public static List<String> getList(List<String> list,int start,int ends,String str)
  30.     {
  31.         if(ends>list.size()||ends-start<0)  //越界非法
  32.             throw new RuntimeException("非法的数值!");
  33.         for(int i=start;i<ends;i++)
  34.         {
  35.             list.set(i, str);  //替换
  36.         }
  37.         return list;  
  38.     }
  39. }
复制代码
希望对你有帮助




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