通过集合的iterator()方法生成迭代器,迭代器的方法
package com.yuteng;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
/**
* @version 1.0
* @author: 余腾
* 1.集合元素的遍历操作,使用迭代器Iterator接口
* 2. 集合对象每次调用iterator()方法都得到一个全新的迭代器对象,默认游标都在集合的第一个元素之前。
* @date: 2021-07-21 20:22
*/
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);
Collection coll1 = Arrays.asList(123, 456, 789);
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());
//报异常 NoSuchElementException
System.out.println(iterator.next());
//方式2 不推荐
for (int i = 0; i < coll.size(); i++) {
System.out.println(iterator.next());
}
//方式3 推荐
while (iterator.hasNext()) {
// 指针默认指向头部上面
//next()进行的操作:①指针下移,②将下移后集合位置上的元素返回
System.out.println(iterator.next());
}
}
@Test
public void test2() {
Collection coll = new ArrayList();
coll.add(123);
coll.add(456);
coll.add(new Person("Jerry", 20));
coll.add(new String("Tom"));
coll.add(false);
Collection coll1 = Arrays.asList(123, 456, 789);
//错误方式一 错误原因 跳着打印数据而且出现 NoSuchElementException异常
Iterator iterator = coll.iterator();
while (iterator.next()!=null){
System.out.println(iterator.next());
}
//错误方式2 错误原因 每次coll.iterator()都会返回一个迭代器对象 出现状况无限循环第一个
while (coll.iterator().hasNext()){
System.out.println(coll.iterator().next());
}
}
@Test
public void test3(){
Collection coll = new ArrayList();
coll.add(123);
coll.add(456);
coll.add(new Person("Jerry", 20));
coll.add(new String("Tom"));
coll.add(false);
Collection coll1 = Arrays.asList(123, 456, 789);
Iterator iterator = coll.iterator();
//删除Tom
while (iterator.hasNext()){
Object obj = iterator.next();
if ("Tom".equals(obj)){
iterator.remove();
}
}
//遍历集合
iterator=coll.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
}