我是靠谱客的博主 优雅导师,最近开发中收集的这篇文章主要介绍Java Iterator 详解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Iterator 是 java.utils 包下定义的迭代器接口。在开发中,我们用它来遍历集合,从而实现访问相应数据以及删除相应数据的目的。

常用方法

  1. boolean hasNext():当迭代器对象中有剩余元素可以访问时,返回 true;
  2. bject next():当 hasNext() 方法返回 true 时,它返回集合中的下一个元素。当没有下一个元素时,此方法会抛出 NoSuchElementException。
  3. void remove():此方法将删除集合中的被选中元素,若此时没有元素被选中,则抛出 IllegalStateException。

示例

遍历集合

代码:

public class IteratorTest {
    @Test
    public void test() {
        Collection c = new ArrayList();
        c.add(123);
        c.add(456);
        c.add(789);
        // 调用 iterator() 得到一个新的迭代器对象
        Iterator iterator = c.iterator();
        // hasNext() 的作用相当于判断是否还有下一个元素
        while (iterator.hasNext()) {
            // 指针下移,并将下移后指针所指的集合中的元素返回
            System.out.println(iterator.next());
        }
    }
}

输出:

123
456
789

删除元素

public class IteratorTest {
 	@Test
    public void test1() {
        Collection c1 = new ArrayList();
        c1.add("a");
        c1.add("b");
        c1.add("c");

        // 调用 iterator() 得到一个新的迭代器对象
        Iterator iterator1 = c1.iterator();
        // hasNext() 的作用相当于判断是否还有下一个元素
        while (iterator1.hasNext()) {
            // 指针下移,并将下移后指针所指的集合中的元素返回
            System.out.println(iterator1.next());
        }

        //删除集合中"c"
        iterator1 = c1.iterator();
        while (iterator1.hasNext()){
            Object obj = iterator1.next();
            if("c".equals(obj)){
                iterator1.remove();
            }
        }
        System.out.println("以下为删除元素 c 后的结果");
        //遍历集合
        iterator1 = c1.iterator();
        while (iterator1.hasNext()){
            System.out.println(iterator1.next());
        }
        System.out.println("以下为删除所有元素结果");
        //遍历集合
        iterator1 = c1.iterator();
        while (iterator1.hasNext()){
            // 若没下一行代码,则会报 IllegalStateException。此时指针位置指向第一个元素之前
            iterator1.next();
            iterator1.remove();
        }
    }
}

输出:

a
b
c
以下为删除元素 c 后的结果
a
b
以下为删除所有元素结果

我们不难得出以下结论:
当我们创建了一个 Iterator 对象后,默认的游标位置在集合的第一个元素之前,next() 作用是将指针位置下移一位。

如果不是上述结论,输出结果不会有 123,以及删除所有元素时也不会报 IllegalStateException。

配图:
iterator

注意

  1. 集合对象每次调用 iterator() 方法都得到一个全新的迭代器对象;
  2. 如果还未调用 next() 或在上一次调用 next() 方法之后已经调用了 remove() 方法,再调用 remove() 都会报 IllegalStateException;
  3. 使用 remove() 方法时,用的是 Iterator 的 remove() 方法,而不是集合的 remove() 方法。

推荐阅读

iterator in java
how to use iterator in java

最后

以上就是优雅导师为你收集整理的Java Iterator 详解的全部内容,希望文章能够帮你解决Java Iterator 详解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部