Java的foreach循环是如何工作的

标签 IT工具网 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 = someList.iterator(); i.hasNext(); ) {
    String item = i.next();
    System.out.println(item);
}

记住,如果需要在循环中使用i.remove;或者以某种方式获取实际的iterator,你不能使用for(:)语法,因为实际的Iterator很难被推断出来。 正如Denis Bueno写的那样,这种代码对任何实现了Iterable接口的对象都奏效。 此外,如果for(:)句法中右侧是一个数组而不是一个可迭代对象,那么内部代码用一个int型的计数器来防止数组越界。详见Java Language Specification: http://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.14.2

stackoverflow链接:http://stackoverflow.com/questions/85190/how-does-the-java-for-each-loop-work

相关文章:

使用Nginx反向代理,自建CDN加速节点

Apache Camel是什么

java如何计算MD5值

java - 如何用 Java 编写测试来检查对象是否正在 JMock 或 JUnit 中使用?

java - 安卓,改造 2 : How to make calls every 5 second?

java遍历集合时移除元素,怎样避免ConcurrentModificationException异常抛出

java - Java 对象的可序列化错误

java - 用自己的实现和信任管理器替换默认的 SSLContext

java - 为什么我的代码会导致编译器标记 "unchecked or unsafe operations"警告?

Nginx反向代理自建CDN加速节点实现DNS智能解析