Java迭代器接口Iterator

Java中的Iterator是这样定义的:
public interface Iterator<E>,表明这是一个接口,<E>表示这是一个泛型接口
由于这是一个接口,那么就没有构造方法了,也就不能使用new+构造方法创建Iterator对象了
我们使用下面的方法创建一个Iterator对象
比如我们要为HashSet<String>对象hashSet创建一个迭代器对象
Iterator<String> it = hashSet.iterator();

Iterator接口中有四个方法,最后一个forEachRemaining方法没看懂,看名字和循环有关。
剩下的三个方法分别是:
boolean hasNext();
<E> next();
void remove();

其中,remove()方法和forEachRemaining()方法都是使用default定义的,表示可以拥有方法体,可以被实现类继承

hasNext()方法是返回还有没有值的,顺便这里多说一句,HashMap中的元素是没有顺序的(不会记录插入的顺序)
next()方法返回下一个元素
remove()方法移除上一个next()方法返回的元素
看代码:

        HashSet<String> hashSet = new HashSet<String>();
        hashSet.add("hello");
        hashSet.add("nihao");
        hashSet.add("nice");
        Iterator<String> it1 = hashSet.iterator();
        while(it1.hasNext()){
            System.out.println("1"+it1.next());
            it1.remove();
        }

我是用its.remove()方法将hashSet中的元素都移除了,注意这里是移除了hashSet中的元素,如果再新建一个迭代器对象it2,可以发现hashSet中没有元素了

        Iterator<String> it2 = hashSet.iterator();
        while(it1.hasNext()){
            System.out.println("2"+it1.next());
        }
posted on 2021-12-09 17:57  小白成长变大神  阅读(191)  评论(0编辑  收藏  举报