黑马程序员技术交流社区
标题:
替换List制定部分的元素
[打印本页]
作者:
Huberry
时间:
2014-8-24 17:08
标题:
替换List制定部分的元素
//把集合中制定部分所有元素都替换成一个指定元素
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索引上。可是运行的时候还是会报异常,请问怎么解决?
作者:
wwfkofufo
时间:
2014-8-24 17:16
好牛的感觉。我最弱的就是集合 = =。还在看视频学习中。坐等大神。
作者:
icris
时间:
2014-8-24 17:34
很奇怪你会觉得 for 效率差,而下面的一个 fill 里面就有一个这么大的 for 了,何况还有两个 addAll 和几个 subList ……
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2