- //把集合中制定部分所有元素都替换成一个指定元素
- import java.util.*;
- class CollectionsDemo
- {
- public static void main(String[] args)
- {
- List<String> list = new ArrayList<String>();
- list.add("aa");
- list.add("abc");
- list.add("adf");
- list.add("tcg");
- list.add("bbh");
- list.add("adf");
- list.add("ccv");
- list.add("cctv");
- System.out.println(list);
- fillDemo(list,2,5);
- System.out.println(list);
-
-
- }
- public static synchronized void fillDemo(List<String> list, int start, int end)
- {
- /*用循环一个一个替换,但是如果元素很多的话,感觉效率会很差
- for (;start<end ;start++ )
- {
- list.set(start,"TVB");
- }*/
- //用fill方法替换需要替换的部分,把list分成三部分
- List<String> startList = list.subList(0, start-1);
- List<String> midList = list.subList(start, end);
- List<String> endList = list.subList(end+1, list.size());
- Collections.fill(midList,"TVB");//把要替换的替换掉
-
- startList.addAll(midList);//替换工作完成后再把三部分加起来
- startList.addAll(endList);
- list = startList;
- //这一部分会出ConcurrentModificationException异常,怎么解决??
- System.out.println(list);
- }
- }
复制代码 刚开始我想把List中要替换的部分用subList获取出来存到一个集合midList中,然后把midList的元素全替换掉,接着用while把List中要替换的部分删掉,最后把midList全部插入到Start索引上。可是运行的时候还是会报异常,请问怎么解决? |
|