迭代器
Collection集合中没有索引,不能使用一般的for循环进行遍历。
// 错误写法
for (int i = 0; i < coll.size(); i++) { System.out.println(coll.get(i)); }
使用迭代器进行集合遍历
package Iterator;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
public class DemoMain {
public static void main(String[] args) {
// 接口 实现类 多态
Collection<String> coll = new ArrayList<>();
coll.add("库里");
coll.add("詹姆斯");
coll.add("詹姆斯");
coll.add("汤普森");
/*for (int i = 0; i < coll.size(); i++) {
// 报错 接口中没有get方法 只有子类中有
System.out.println(coll.get(i));
}*/
for(Iterator<String> it = coll.iterator();it.hasNext();){
System.out.println(it.next());
}
System.out.println("=============");
Iterator<String> it = coll.iterator();
while (it.hasNext()){
System.out.println(it.next());
}
}
}
实现原理
使用增强for循环(for each)遍历数组和集合
增强for循环必须有被遍历的目标。目标只能是集合或者数组。且仅仅作为遍历操作出现。
package Iterator;
import java.util.ArrayList;
import java.util.Collection;
public class StrongerFor {
public static void main(String[] args) {
demo1();
System.out.println("========");
demo2();
}
private static void demo2() {
int[] arr = new int[]{1,2,3,4,5};
for (int i : arr) {
System.out.println(i);
}
}
public static void demo1(){
// 多态
Collection<Integer> list = new ArrayList<>();
for (int i = 0; i < 5; i++) {
list.add(i);
}
for (Integer integer : list) {
System.out.println(integer);
}
}
}