每个'循环的Java'如何工作?

每个'循环的Java'如何工作?

考虑:

List<String> someList = new ArrayList<String>();// add "monkey", "donkey", "skeleton key" to someList
for (String item : someList) {
    System.out.println(item);}

如果for不使用for each语法,等效循环会是什么样子?


慕娘9325324
浏览 394回答 3
3回答

holdtom

for&nbsp;(Iterator<String>&nbsp;i&nbsp;=&nbsp;someIterable.iterator();&nbsp;i.hasNext();)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;item&nbsp;=&nbsp;i.next(); &nbsp;&nbsp;&nbsp;&nbsp;System.out.println(item);}请注意,如果需要i.remove();在循环中使用,或以某种方式访问实际的迭代器,则不能使用该for ( : )习惯用法,因为实际的迭代器只是推断出来的。正如Denis Bueno所指出的,此代码适用于实现该Iterable接口的任何对象。此外,如果for (:)习语的右侧是一个array而不是一个Iterable对象,内部代码使用一个int索引计数器并array.length反而进行检查。请参阅Java语言规范。

德玛西亚99

每个的构造对数组也有效。例如String[]&nbsp;fruits&nbsp;=&nbsp;new&nbsp;String[]&nbsp;{&nbsp;"Orange",&nbsp;"Apple",&nbsp;"Pear",&nbsp;"Strawberry"&nbsp;};for&nbsp;(String&nbsp;fruit&nbsp;:&nbsp;fruits)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;fruit&nbsp;is&nbsp;an&nbsp;element&nbsp;of&nbsp;the&nbsp;`fruits`&nbsp;array.}这基本上相当于for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;fruits.length;&nbsp;i++)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;fruit&nbsp;=&nbsp;fruits[i]; &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;fruit&nbsp;is&nbsp;an&nbsp;element&nbsp;of&nbsp;the&nbsp;`fruits`&nbsp;array.}所以,总结:[nsayer]以下是发生的事情的更长时间:for(Iterator<String>&nbsp;i&nbsp;=&nbsp;someList.iterator();&nbsp;i.hasNext();&nbsp;)&nbsp;{ &nbsp;&nbsp;String&nbsp;item&nbsp;=&nbsp;i.next(); &nbsp;&nbsp;System.out.println(item);}请注意,如果您需要使用i.remove();&nbsp;在你的循环中,或以某种方式访问实际的迭代器,你不能使用for(:)习语,因为实际的迭代器只是推断。[丹尼斯布埃诺]这是nsayer的回答所暗示的,但值得注意的是,当“someList”是实现java.lang.Iterable的任何东西时,OP的for(..)语法将起作用 - 它不必是列表,也不一定是来自java.util中。因此,即使您自己的类型也可以使用此语法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java