迭代器对象:
Iterator:迭代器对象,只能从上往下迭代;
Boolean hasNext():判断指针后是否有下一个元素
Object next():获取指针的下一个元素,并且移动指针
ListIterator:是Iterator接口的子接口,支持双向迭代,从上往下迭代,或从下往上迭代
Enumeration:古老的迭代器对象,现在已经被Iterator取代,适用于古老的Vector类。
深入分析for-each和迭代器:
1、foreach可以操作数组:底层依然采用for循环,索引来获取数组;
2、foreach可以操作Iterable的实例:底层其实采用Itertor(迭代器)。
for-each语法格式:
for(类型 变量:数组名/Iterable的实例){
//TODO
}
而且只能使用迭代器对象的remove方法。
Iterator:迭代器对象,只能从上往下迭代;
Boolean hasNext():判断指针后是否有下一个元素
Object next():获取指针的下一个元素,并且移动指针
ListIterator:是Iterator接口的子接口,支持双向迭代,从上往下迭代,或从下往上迭代
Enumeration:古老的迭代器对象,现在已经被Iterator取代,适用于古老的Vector类。
深入分析for-each和迭代器:
1、foreach可以操作数组:底层依然采用for循环,索引来获取数组;
2、foreach可以操作Iterable的实例:底层其实采用Itertor(迭代器)。
for-each语法格式:
for(类型 变量:数组名/Iterable的实例){
//TODO
}
接下来查看一下集合元素的迭代/遍历:
//集合元素的迭代/遍历操作
public class IteratorDemo {
public static void main(String[] args) {
List list = new ArrayList();
list.add("A");
list.add("B");
list.add("C");
//方式1:for循环
for (int index = 0; index < list.size(); index++) {
Object ele = list.get(index);//取出指定索引位置的元素
System.out.print(ele);
}
System.out.println();
System.out.println("--------------------------");
//方式2:for-each增强for循环
for (Object object : list) {
System.out.print(object);
}
System.out.println();
System.out.println("--------------------------");
//方式3:使用while循环操作迭代器Iterator
Iterator it = list.iterator();
while(it.hasNext()){
System.out.print(it.next());
}
System.out.println();
System.out.println("--------------------------");
//方式4:使用for循环来曹组迭代器Iterator
for (Iterator it1 = list.iterator(); it1.hasNext();) {
System.out.print(it1.next());
}
System.out.println();
System.out.println("--------古老的分割线-------");
//还有一种非常古老的迭代器
Vector v = new Vector();
v.add("A");
v.add("B");
v.add("C");
//古老的迭代器对象
Enumeration en = v.elements();
while(en.hasMoreElements()){
Object ele = en.nextElement();
System.out.print(ele);
}
}
}
其实通过反编译,你会发现,for-each语法其实也是语法糖,其底层依旧使用for循环:
而且只能使用迭代器对象的remove方法。