集合2、集合_Collection接口_Iterator

Iterator的使用

集合元素的遍历操作,使用 Iterator 接口

  1. 内部方法:hasNext()、next()
  2. 合对象每次调用iterator()方法都得到一个全新的迭代器对象,默认游标都在集合的第一个元素之前。
  3. 内部定义了remove(),可以在遍历的时候,删除集合中的元素。此方法不同于集合直接调用remove()

遍历操作:

@Test
    public void test1(){
        Collection coll = new ArrayList();
        coll.add(123);
        coll.add(456);
        coll.add(new String("abc"));
        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()){
                //next()    ①指针下移 ②返回下移以后所在位置的元素
            System.out.println(iterator.next());
        }

    }

remove()的使用

//测试 Iterator 中 remove()
@Test
public void test2(){
    Collection coll = new ArrayList();
    coll.add(123);
    coll.add(456);
    coll.add(new String("abc"));
    coll.add(false);

    Iterator iterator = coll.iterator();

    while (iterator.hasNext()){
        Object obj = iterator.next();
        if ("abc".equals(obj)){
            iterator.remove();
        }

    }

    iterator = coll.iterator();
    while (iterator.hasNext()){
        System.out.println(iterator.next());
    }
}

如果还未调用next()或在上一次调用 next 方法之后已经调用了 remove 方法,再调用remove都会报IllegalStateException异常。

posted @ 2021-11-19 23:44  叁玖贰拾柒  阅读(34)  评论(0)    收藏  举报