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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Huberry 中级黑马   /  2014-8-24 17:08  /  1142 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. //把集合中制定部分所有元素都替换成一个指定元素
  2. import java.util.*;
  3. class CollectionsDemo
  4. {
  5.         public static void main(String[] args)
  6.         {
  7.                 List<String> list = new ArrayList<String>();

  8.                 list.add("aa");
  9.                 list.add("abc");
  10.                 list.add("adf");
  11.                 list.add("tcg");
  12.                 list.add("bbh");
  13.                 list.add("adf");
  14.                 list.add("ccv");
  15.                 list.add("cctv");
  16.                 System.out.println(list);
  17.                 fillDemo(list,2,5);
  18.                 System.out.println(list);
  19.                
  20.                
  21.         }

  22.         public static synchronized void fillDemo(List<String> list, int start, int end)
  23.         {               
  24.                 /*用循环一个一个替换,但是如果元素很多的话,感觉效率会很差
  25.                 for (;start<end ;start++ )
  26.                 {
  27.                         list.set(start,"TVB");
  28.                 }*/

  29.                 //用fill方法替换需要替换的部分,把list分成三部分
  30.                 List<String> startList = list.subList(0, start-1);
  31.                 List<String> midList = list.subList(start, end);
  32.                 List<String> endList = list.subList(end+1, list.size());
  33.                 Collections.fill(midList,"TVB");//把要替换的替换掉
  34.                        
  35.                 startList.addAll(midList);//替换工作完成后再把三部分加起来
  36.                 startList.addAll(endList);
  37.                 list = startList;
  38. //这一部分会出ConcurrentModificationException异常,怎么解决??
  39.                 System.out.println(list);
  40.         }
  41. }
复制代码
刚开始我想把List中要替换的部分用subList获取出来存到一个集合midList中,然后把midList的元素全替换掉,接着用while把List中要替换的部分删掉,最后把midList全部插入到Start索引上。可是运行的时候还是会报异常,请问怎么解决?

2 个回复

倒序浏览
好牛的感觉。我最弱的就是集合   = =。还在看视频学习中。坐等大神。
回复 使用道具 举报
很奇怪你会觉得 for 效率差,而下面的一个 fill 里面就有一个这么大的 for 了,何况还有两个 addAll 和几个 subList ……
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马