问题描述
- 求解,在for新循环,即增强型循环中,能不能删除集合的元素。。z
-
如题,求解,在for新循环,即增强型循环中,能不能删除集合的元素。。记得for新循环就是一个迭代器吧,那它要怎么调用他的remove方法,是还要在循环体里实例化Iterate吗
解决方案
可以用一般的for循环按照下标从后往前遍历。从前往后遍历的时候删除元素会丢出异常。
解决方案二:
使用迭代器进行循环集合,然后使用迭代器的remove方法,其他的会引发异常
解决方案三:
用迭代器循环,然后再用迭代器中的remove()方法删除你要删除的集合元素
解决方案四:
不行,要做删除只能用迭代器,不然都会或多或少闯荡出现问题
解决方案五:
可以不使用迭代器,但是你要对索引进行计算
比如
for(int i = 0;i < size; i++){
if(condition){
list.remove(i);
// 这下面要对i做一个计算,不过我忘记了具体是怎么算的,你要自己试验一下
}
}
解决方案六:
可以将要删除的数据存放在一个新的数组中,然后使用removeAll方法进行删除即可,不多说直接上代码
public static void main(String[] args)
{
List list = new ArrayList<>();
for (int i = 0; i < 10; i++)
{
list.add(i+1);
}
for (Integer temp : list)
{
System.out.println(temp);
}
System.out.println("---------------------------------begin delete element");
List deleteList = new ArrayList<>();
for (Integer deleteElement : list)
{
if(deleteElement%2==0)
{
deleteList.add(deleteElement);
}
}
list.removeAll(deleteList);
deleteList = null;
for (Integer temp : list)
{
System.out.println(temp);
}
}
解决方案七:
for循环集合有对应的remove方法或转换特iterate来remove
http://blog.csdn.net/strutce/article/details/45937415
解决方案八:
用迭代器循环,然后使用迭代器的remove方法
解决方案九:
集合的3种遍历形式(一般for循环、增强型for循环、迭代器)
Java中增强型for循环
增强型for循环的各个参数