余腾

导航

集合中迭代器方法的使用

通过集合的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());
        }

    }
}

posted on 2021-07-21 21:03  余腾  阅读(134)  评论(0)    收藏  举报

Fork me on Gitee