为方便的处理集合Collection中的元素,Java中出现了一个对象叫做 迭代器(Iterator),该对象提供了一些方法专门处理集合中的元素。
主要方法(下例中):
boolean b = iter.hasNext();
// 判断是否还有下一个元素?
String s = iter.next();
// 取出下一个元素
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Demo {
public static void main(String[] args) {
Collection<String> coll = new ArrayList<>();
coll.add("关羽");
coll.add("张飞");
coll.add("赵云");
coll.add("黄忠");
coll.add("马超");
// 对 Collection 进行迭代的类,称其为迭代器。
// 专业对象做专业的事情,迭代器就是专门取出集合元素的对象。
// 但是该对象比较特殊,不能直接创建对象(通过new),
// 该对象是以内部类的形式存在于每个集合类的内部。
// 所以所有的Collection体系集合都可以获取自身的迭代器。
// 使用集合中的方法iterator()获取迭代器的实现类对象
// 用Iterator接口类型的iter接收(多态)
// Iterator<E>也有泛型,和集合保持一致,这里都用String
// 如果前面集合没有带上泛型的话,迭代器也不需要带
Iterator<String> iter = coll.iterator();
boolean b = iter.hasNext();// 判断是否还有下一个元素?
System.out.println(b);
String s = iter.next();// 取出下一个元素
System.out.println(s);
System.out.println("用while循环把剩下的一次性取出");
while (iter.hasNext()) {
String e = iter.next();
System.out.println(e);
}
}
}
/*
true
关羽
用while循环把剩下的一次性取出
张飞
赵云
黄忠
马超
*/
增强for循环 用来遍历集合Collection和数组(只能是这两者)。底层用的也是迭代器,使用for循环的形式简化迭代器书写,所有单列集合都可以使用增强for循环。
格式:for(集合/数组的数据类型 变量名:集合名/数组名){sout(变量名)}
import java.util.ArrayList;
public class Demo {
public static void main(String[] args) {
method1();
method2();
}
// 使用增强for循环遍历数组
private static void method1() {
String[] arr = {"貂蝉", "杨玉环", "王昭君", "西施"};
// 格式:for(集合/数组的数据类型 变量名:集合名/数组名){sout(变量名)}
for (String i : arr) {
System.out.println(i);
}
}
// 使用增强for循环遍历集合Collection
private static void method2() {
ArrayList<Integer> list = new ArrayList<>();
list.add(745);
list.add(87);
list.add(3310);
// 格式:for(集合/数组的数据类型 变量名:集合名/数组名){sout(变量名)}
for (int s : list) {
System.out.println(s);
}
}
}
/*
貂蝉
杨玉环
王昭君
西施
745
87
3310
*/