一尘不染

Java 'for each' 循环是如何工作的?

javascript

考虑:

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

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


阅读 171

收藏
2022-02-21

共1个答案

一尘不染

for (Iterator<String> i = someIterable.iterator(); i.hasNext();) {
    String item = i.next();
    System.out.println(item);
}

请注意,如果您需要i.remove();在循环中使用,或以某种方式访问实际的迭代器,则不能使用该for ( : )惯用语,因为实际的迭代器只是推断出来的。

正如 Denis Bueno 所指出的,此代码适用于任何实现Iterableinterface的对象。

for (:)此外,如果习语的右侧是 anarray而不是Iterableobject,则内部代码使用 int 索引计数器并进行检查array.length

2022-02-21