集合元素的遍历
1.iterator接口
2. foreach
1. 使用迭代器Iterator接口
iterator():返回Iterator接口的实例,用于遍历集合元素。放在IteratorTest.java中测试
内部的方法: hasNext()和next()
package com.jh;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class IteratorTest {
@Test
public void test1(){
Collection coll = new ArrayList();
coll.add(123);
coll.add(456);
coll.add(new Person("Jerry",20));
coll.add(new String("Tom"));
coll.add(false);
Iterator iterator = coll.iterator();
//方式一:不可取
// System.out.println(iterator.next());
// System.out.println(iterator.next());
// System.out.println(iterator.next());
// System.out.println(iterator.next());
// System.out.println(iterator.next());//写多了报异常
//方式二:不推荐
// for (int i = 0;i < coll.size();i++){
// System.out.println(iterator.next());
// }
//方式三:推荐
//hasNext()∶判断是否还有下一个元素
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
结果
迭代器执行原理:
显而易见,iterator对象相当于一个指针,指向第一个元素的上方空白位置。hasNext()判断下一个位置是否有元素,有则返回true,next()则是先将指针下移一位并返回所指的元素。
注:
iterator只是用于遍历,不是容器,因此调用iterator并不是生成一个与原来coll相同的结构
错误写法
package com.jh;
import org.junit.Test;
import java.util.ArrayList;
import java.util