foreach为何会漏掉集合内容?

时间:2022-04-26 07:41:47
以前发现直接用序号遍历集合时会发生漏掉一些元素的情况,而用Iterator则不会。刚发现用foreach也会发生漏掉一些元素的情况。
直接用序号和用foreach遍历为何会漏掉集合内容呢?

11 个解决方案

#1


我到目前为止还没有发现你说的情况,请贴出代码

#2


?? foreach为什么要用序号? 直接遍历即可,你代码怎么写的?贴出来看看,没遇到过会漏的情况

#3


我也没发现过这种情况,代码发出来研究下

#4


代码贴一下,看看~~~~

#5


foreach:

for(String s : StringList) {
......
}

直接用序号:

for (int i=0;i<StringList.size(); i++) {
......
}

#6


你是遍历读取吧,不会漏。
如果遍历删除,别那样做,用Iterator吧

#7


是不是LZ遍历的时候删除了某些元素

#8


只是读取。
现在只敢用Iterator,而netbeans就总会在哪一行提示可以用foreach,真不甘心

#9


如果这样,那不是 乱套了。不可能的。

#10


6L正解。
另外,如果想在循环过程中删除元素,除了iterator,也可以用逆向遍历的方式:
for(int i=list.size()-1;i>=0;i--)

#11


foreach的时候删除元素就不是漏那么简单是直接抛错了,而且 foreach也是调用iterator来的,明显是楼主姿势不对

集合,亦即是Set,一向都是无序的,你怎么个序号访问法?

我认为是楼主在iterate时增加了些元素还合理点

#1


我到目前为止还没有发现你说的情况,请贴出代码

#2


?? foreach为什么要用序号? 直接遍历即可,你代码怎么写的?贴出来看看,没遇到过会漏的情况

#3


我也没发现过这种情况,代码发出来研究下

#4


代码贴一下,看看~~~~

#5


foreach:

for(String s : StringList) {
......
}

直接用序号:

for (int i=0;i<StringList.size(); i++) {
......
}

#6


你是遍历读取吧,不会漏。
如果遍历删除,别那样做,用Iterator吧

#7


是不是LZ遍历的时候删除了某些元素

#8


只是读取。
现在只敢用Iterator,而netbeans就总会在哪一行提示可以用foreach,真不甘心

#9


如果这样,那不是 乱套了。不可能的。

#10


6L正解。
另外,如果想在循环过程中删除元素,除了iterator,也可以用逆向遍历的方式:
for(int i=list.size()-1;i>=0;i--)

#11


foreach的时候删除元素就不是漏那么简单是直接抛错了,而且 foreach也是调用iterator来的,明显是楼主姿势不对

集合,亦即是Set,一向都是无序的,你怎么个序号访问法?

我认为是楼主在iterate时增加了些元素还合理点