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

考虑:

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

如果不使用for each语法,循环的等价物会是什么样的?

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

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

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

此外,如果for(:)习惯用法的右侧是数组而不是Iterable对象,则内部代码使用int索引计数器并检查array.length.见Java Language Specification.

转载注明原文:每个’循环的Java’如何工作? - 代码日志