黑马程序员技术交流社区
标题:
foreach循环遍历list集合
[打印本页]
作者:
刘学
时间:
2012-9-4 09:13
标题:
foreach循环遍历list集合
List list = new ArrayList();
list.add("333");
list.add("555");
list.add("666");
list.add("888");
int i=0;
for ( Object obj : list) {
if (obj.equals("333")) {
list.remove(obj);
}
System.out.println(list.get(i)+ " ");
i++;
}
红色部分为什么会出错,为什么在foreach中删除集合中元素不可以,使用的是
list集合中的remove方法怎么不对呢?
作者:
邓超军
时间:
2012-9-4 09:21
高级for循环使用要注意:可以进行查询、修改,但是不能进行增加和删除。所以不管你是遍历List也好,还是遍历数组也好,你进行删除操作都会出错的。
作者:
黑马王建伟
时间:
2012-9-4 09:39
本帖最后由 黑马王建伟 于 2012-9-4 09:46 编辑
此增强for循环对集合进行遍历,可以获取集合元素,可以修改元素,但不能对集合进行增删操作;
迭代器除了遍历,还可以进行rimove集合中元素的操作;
如果用ListIterator,可以对集合进行增删改查的操作。
作者:
杨卓儒
时间:
2012-9-4 10:13
你把remove放进高级for循环中了,所以无法执行
作者:
舒远
时间:
2012-9-4 11:23
不能在高级for循环中进行对数组,结合的增删操作,因为增删在不断的修改集合或者数组的长度,这是一个陷阱,很容易造成数组越界(特别是在删除的时候),比如原来集合大小为3,你删除一个,变为2了,此时for会继续遍历第三个元素,就会造成越界。
一般使用迭代器来进行遍历过程中的增删操作。迭代器在工作时会不断的判断是否还有元素可以被迭代。保证了安全性。
作者:
李志群
时间:
2012-9-4 11:27
高级for:foreach(): 只可以遍历数组 和Collection集合。
格式是:foreach(变量名,数组或者Collection集合){
}
这个高级for 只是可以做单纯的遍历集合,不可以有增删的动作。
作者:
刘学
时间:
2012-9-5 09:38
明白了 ,已解决,谢谢大家
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2