Java:每个循环都跳过集合

时间:2015-11-25 12:11:30

标签: java loops for-loop collections skip

我在调试代码时遇到了一个我以前没有遇到过的现象。

基本上,似乎Java在每个循环中跳过集合的最后一个元素。

循环看起来像这样:

 for (ReportRow contentRow : rows) {            
     if (contentRow instanceof Data1Row) {
         doSomething1();
     }
     if (contentRow instanceof GrossAmmountRow) {
         doSomething2();
     }
     if (contentRow instanceof TotalAmountRow) {
         doSomething3();
     }
     if (contentRow instanceof FinalRow) {
         return null;
     }
 }

现在集合“rows”由几个元素组成,每个元素都继承父类“ReportRow”(Data1Row,GrossAmountRow,TotalAmountRow,FinalRow)。

现在的问题是,每次执行循环时都会跳过集合的最后一个元素。我已经多次调试该方法以验证该集合是否仍然包含该元素,但该元素始终存在 - 它只是被跳过。

我的谷歌搜索没有给我任何令人满意的结果,所以我想我会在这里打开一个帖子。

之前有没有人遇到类似的事情?或者知道什么可能导致这个问题?我真的很茫然。

一些帮助会有很多帮助!

提前谢谢。

2 个答案:

答案 0 :(得分:4)

 if (contentRow instanceof FinalRow) {
     return null;
 }

如果您在FinalRow对象后面有两个FinalRow或其他内容,则会跳过"跳过"因为该方法在第一次遇到后停止。

答案 1 :(得分:0)

我已经解决了这个问题。

“问题”是我没有注意到这里使用了一个子列表,并且它的大小比原始列表小(仅为1)。

在我已经评论过这个帖子中的一些答案之后,我才明白了。

感谢所有试图提供帮助的人!