A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 凝聚 中级黑马   /  2013-10-11 20:29  /  1578 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 凝聚 于 2013-10-12 15:14 编辑

请问用collections中的fill方法,把一个List集合中的指定一段替换为同一个字符串,List集合存的是字符串。该怎么弄,最好举个例子。

评分

参与人数 1技术分 +1 收起 理由
李江 + 1

查看全部评分

6 个回复

倒序浏览
collections中的fill方法使用如下:
  1. public void Test1() {
  2.                  List<String> list = new ArrayList<String>();
  3.                  list.add("aaa");
  4.                  list.add("bbb");
  5.                  list.add("ccc");
  6.                  Collections.fill(list, "ddd");
  7.                  for (String str :  list) {
  8.                          System.out.println(str);
  9.                  }
  10.         }
复制代码
这段代码运行的结果会把ArrayList中的字符串全都替换为ddd

回复 使用道具 举报
  1. import java.util.ArrayList;
  2. import java.util.Collections;
  3. import java.util.List;

  4. public class Demo {

  5.         public static void main(String[] args) {
  6.                 List<String> list = new ArrayList<String>();
  7.                 list.add("aa");
  8.                 list.add("bb");
  9.                 list.add("cc");
  10.                 list.add("dd");
  11.                 list.add("ee");
  12.                 System.out.println(list);// [aa, bb, cc, dd, ee]

  13.                 List<String> subList = list.subList(1, 3);
  14.                 System.out.println(subList);// [bb, cc]

  15.                 //list和subList相关,相关的元素在任意一个集合中改变,另一个也改变
  16.                 Collections.fill(subList, "ii");
  17.                 System.out.println(list);// [aa, ii, ii, dd, ee]
  18.         }

  19. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1

查看全部评分

回复 使用道具 举报 1 0
  1. import java.util.ArrayList;
  2. import java.util.Collections;
  3. import java.util.Iterator;
  4. import java.util.List;


  5. public class Collections_fill {
  6.         public static void main(String[] args) {
  7.                
  8.                 List<String> arrList=new ArrayList<String>();
  9.                 arrList.add("第1个");
  10.                 arrList.add("第2个");
  11.                 arrList.add("第3个");
  12.                 arrList.add("第3个");
  13.                 arrList.add("第3个");
  14.                 Collections.replaceAll(arrList, "第3个", "replace");//这是相同的可以全部换
  15.                 Iterator<String> itR=arrList.iterator();
  16.                 while(itR.hasNext()){
  17.                         System.out.println(itR.next());
  18.                 }
  19.                
  20.                 Collections.fill(arrList, "无");// 而fill这是是全部换的
  21.                 Iterator<String> itF=arrList.iterator();
  22.                 while(itF.hasNext()){
  23.                         System.out.println(itF.next());
  24.                 }
  25.                 // 若你是想集合从哪到哪换的话,可以利用索引 如2-4个元素换成“无”
  26.                 for(int i=2;i<4;i++){
  27.                         arrList.set(i, "无");
  28.                 }
  29.                
  30.         }
  31. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报 1 0
  1. import java.util.ArrayList;  
  2. import java.util.Collections;  
  3. import java.util.Comparator;  
  4. import java.util.List;  
  5.    
  6. public class CollectionsDemo {  
  7.   public static void main(String[] agrs) {  
  8.     /* 定义了一个List对象 */  
  9.     List<String> list = new ArrayList<String>();  
  10.     list.add("dkf");  
  11.     list.add("abcde");  
  12.     list.add("zz");  
  13.     list.add("edf");  
  14.     list.add("asfr");  
  15.     Collections.sort(list);  
  16.     System.out.println("集合:" + list);  
  17.     /*
  18.      * fill(List<? superT> list,T obj)将集合中的所有元素替换成指定元素
  19.      */  
  20.     Collections.fill(list, "ss");  
  21.     System.out.println("fill后的集合:" + list);  
  22.     /*利用自定义的方法把索引从2~4的元素替换成"123"*/  
  23.     fillPart(list,"123",2,4);  
  24.     System.out.println("部分自定义替换后的集合:" + list);  
  25.      
  26.     /* boolean replaceAll(List<T> list, ToldVal,T newVal)
  27.      * 将集合中的所有的某一值替换成指定的值*/  
  28.     Collections.replaceAll(list, "ss", "kk");  
  29.     System.out.println("replaceAll后的集合:" + list);  
  30.   }  
  31.    
  32.   /* 替换集合中的部分元素使用fill 从索引start~end 包含start,不包含end*/  
  33.   public static  <T> void fillPart(List<?super T> list, T obj, int start, int end) {  
  34.           for(int i=start;i<end;i++){  
  35.           list.set(i, obj);  
  36.           }  
  37.   }  
  38.    
  39. }  
  40. 结果:  
  41. 集合:[abcde, asfr, dkf, edf, zz]  
  42. fill后的集合:[ss, ss, ss, ss, ss]  
  43. 部分自定义替换后的集合:[ss, ss, 123, 123, ss]  
  44. replaceAll后的集合:[kk, kk, 123, 123, kk]  
复制代码
回复 使用道具 举报 1 0
To 金牌黑马 2013-10-12 11:18:38
地板
楼主你好,如果问题已解决请将帖子状态改为提问结束,如果未解决请继续提问,谢谢合作。
回复 使用道具 举报
凝聚 中级黑马 2013-10-12 15:40:25
7#

太给力了,调试通过了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马