Java for-each循环在遍历列表的方式上是否与常规for循环不同?
考虑以下示例中的Java for-each循环在遍历列表的方式上是否与常规for循环不同?,java,for-loop,foreach,Java,For Loop,Foreach,考虑以下示例中的ArrayList列表 我很好奇for-each循环在“幕后”是如何工作的。传统的for循环通过数字索引访问列表元素,如下所示: for(int i = 0; i < list.size(); i++) 它在幕后使用迭代器,而不是传统的索引 for(String name: names){ } 相当于 for (Iterator<String> i = names.iterator(); i.hasNext();){ } for(迭代器i=names.I
ArrayList列表
我很好奇for-each循环在“幕后”是如何工作的。传统的for循环通过数字索引访问列表元素,如下所示:
for(int i = 0; i < list.size(); i++)
它在幕后使用
迭代器
,而不是传统的索引
for(String name: names){
}
相当于
for (Iterator<String> i = names.iterator(); i.hasNext();){
}
for(迭代器i=names.Iterator();i.hasNext();){
}
另请参见
Iterator<String> itr = list.iterator();
while(itr.hasNext()) {
String item = itr.next():
//your code
}
Iterator itr=list.Iterator();
while(itr.hasNext()){
String item=itr.next():
//你的代码
}
增强的for循环是使用迭代器作为基本for循环实现的
见:
增强型for语句的含义通过翻译为
一个基本的for语句,如下所示:
- 如果表达式类型是
的子类型,则翻译如下 如果表达式的类型是某个类型参数X的Iterable
的子类型,那么让我成为类型Iterable
; 否则,让我成为原始类型java.util.Iterator
java.util.Iterator
for (I #i = Expression.iterator(); #i.hasNext(); ) {
VariableModifiersopt TargetType Identifier =
(TargetType) #i.next();
Statement
}
它使用标准迭代器。它不知道迭代列表可以用get()完成。它只对数组使用索引查找。
for (I #i = Expression.iterator(); #i.hasNext(); ) {
VariableModifiersopt TargetType Identifier =
(TargetType) #i.next();
Statement
}