我在Netbeans工作,它一直建议我使用迭代器而不是for-in循环。上次我遇到它的时候是这个:
ON(candidatura.PRG_PAR = anagraficaEdificio.PRG_PAR, candidatura.PRG_CAN = anagraficaEdificio.PRG_CAN)
这与效率有关吗?通过我自己的逻辑,上面的例子比导入一个类更有效。
答案 0 :(得分:1)
如下所示的for循环基本上是一个非常漂亮的迭代器,旨在迭代集合。
除非你正在做其他要求你删除元素的事情,能够向前移动next()
或向后previous()
通过列表,并且能够检查,否则它并不重要使用hasNext()
TL:DR
如果您只想迭代forEach
,最好使用Collection
循环。否则,请使用迭代器。
答案 1 :(得分:1)
尝试使用for循环并在循环时删除一些元素:-)你会得到相当异常NewsDetailsViewController *detailsVc= [[NSBundle mainBundle] loadNibNamed:@"NewsDetailsViewController"
owner:self
options:nil][0];
这就是为什么使用ConcurrentModificationException
接口是安全的并且可以在这样的情况下使用情况。我假设NetBeans建议您使用Iterator
。
答案 2 :(得分:0)
增强的for语句是语法糖,可以更好地迭代Iterable
。参考JLS:
增强的for语句具有以下形式:
EnhancedForStatement: for ( FormalParameter : Expression ) Statement
...
增强的for语句相当于表单的基本for语句:
for (I #i = Expression.iterator(); #i.hasNext(); ) { VariableModifiersopt TargetType Identifier = (TargetType) #i.next(); Statement }
因此,编写增强的for语句比使用显式迭代器更有效,因为它是使用迭代器实现的。
似乎令人惊讶的是,Netbeans会建议您在问题中使用显式迭代器形式 - 而语言功能的存在并不一定意味着使用它是一个好主意,我可以& <39>看看在这种情况下不使用它会带来什么好处。