Java:如果使用for-each循环集合,则替代iterator.hasNext()

Dan*_*rzo 16 java foreach loops

我正在尝试使用for-each语句替换基于迭代器的Java列表循环,但代码在某些时候使用iterator.hasNext()它来检查它是否到达列表中的最后一个元素.

for-each替代品有类似的东西吗?

for (Object current : objectList) {
   if (last-element) 
      do-something-special
}
Run Code Online (Sandbox Code Playgroud)

Mir*_*uta 21

for-each只是迭代器版本的语法糖,如果你检查编译的字节码,那么你会注意到compilator实际上将它改为迭代器版本.

使用for-each表单,您无法检查是否有更多元素.如果您需要该功能,请使用显式迭代器.

  • ..或者如果你需要Iterator #remove()方法(如果它是在实际的Iterator上实现的话) (4认同)

And*_*s_D 8

除了Luno的回答:

Iterator<MyClass> it = myCollection.iterator();
while(it.hasNext()) {
  MyClass myClass = it.next():
  // do something with myClass
}
Run Code Online (Sandbox Code Playgroud)

翻译为:

for (MyClass myClass:myCollection) {
  // do something with myClass
}
Run Code Online (Sandbox Code Playgroud)