List 不要随便remove 元素

代码片段1:

其中IDs意义是:不为空的  String[] IDs  数组。

List stkCs = new ArrayList();
Collections.addAll(stkCs, IDs);
List delList = new ArrayList();//用来装需要删除的stkC
for(String stkc :stkCs){
List list = searchService.findStkMasIndexList(stkc );
if(list.size()>0){
delList.add(stkc);
}
}
stkCs.removeAll(delList);//遍历完成后执行删除

//最终要用的参数list
List stkMasIndexs  = stkMasIndexService.transToStkMasIndex(stkCs);



代码片段2 :

其中IDs意义是:不为空的  String[] IDs  数组。

List stkCs = new ArrayList();
Collections.addAll(stkCs, IDs);
for(String stkc :stkCs){
List list = searchService.findStkMasIndexList(stkc );
if(list.size()>0){
stkCs.remove(stkc);
}
}

//最终要用的参数list
List stkMasIndexs  = stkMasIndexService.transToStkMasIndex(stkCs);



代码片段1 看起来好像太啰嗦,麻烦,代码片段2 完全可以实现一样的功能。但是代码2 其实是会报错的 一段错误代码。抛出的异常为:



就是因为作为循环的主体对象,在循环过程中,对象本本身发生了变化,而且对象的变花会直接影响循环的过程,即循环的次数,所以或抛出此种异常。可以用片段1 的方法,用里一个list 封装即将删除的元素。


你可能感兴趣的:(List 不要随便remove 元素)