一. 迭代器的执行原理

二. 迭代器是通用的
package com.company.Collection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
public class CollectionText1 {
public static void main(String[] args) {
//ArrayList集合:有序可重复
Collection c1 = new ArrayList();
c1.add(1);
c1.add(2);
c1.add(3);
c1.add(4);
c1.add(1);
c1.add(2);
//迭代集合
Iterator it1 = c1.iterator();
while (it1.hasNext()){
//存进去什么类型,取出来还是什么类型
System.out.println(it1.next());//输出的时候会转换成字符串,因为这里的println会调用toString()方法
}
System.out.println();
//HashSet集合:无序不可重复
Collection c2 = new HashSet();
//无序:存进去的取出的顺序不一定相同。
//不可重复:储存1后,不可再储存1.
c2.add(1);
c2.add(2);
c2.add(3);
c2.add(4);
c2.add(1);
c2.add(2);
Iterator it2 = c2.iterator();
while (it2.hasNext()){
System.out.println(it2.next());
}
}
}
运行结果:

三. foreach(增强for循环)
JDK5.0之后推出了一个新特性:叫做增强for循环,或者叫做foreach
1. 普通遍历数组方法(普通for循环):
for(int i = 0 ; i < arr.length ; i++){
System.out.println(arr[i]);
}
2. 增强for(foreach)方法
语法:for(元素类型 变量名:数组或集合) {System.out.println(变量名) }
foreach有一个缺点:没有下标
在需要使用下标的循环中,不建议使用增强for循环。
for(int data : arr){
//data就是数组中的元素(数组中的每一个元素)
System.out.println(data);
}
3. 集合使用foreach方法
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class forEachText {
public static void main(String[] args) {
List<String> l = new ArrayList<>();
l.add("hello");
l.add("world!");
l.add("kitty");
//用迭代器方式遍历
Iterator<String> it = l.iterator();
while (it.hasNext()){
String s = it.next();
System.out.println(s);
}
//使用下标方式
for ( int i = 0 ;i < l.size(); i++){
System.out.println(l.get(i));
}
//使用foreach
for (String s : l){ //因为泛型使用的是String类型,所以是String s
System.out.println(s);
}
}
}



