我是靠谱客的博主 虚拟铃铛,最近开发中收集的这篇文章主要介绍关于迭代器 Iterator 中 hasNext 和 next 方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言:虽然集合没有索引,但是为了方便说明迭代器的方法,就先引用索引这个名词,实际上集合是不能用索引来获取元素的

1、hasNext() :此方法用来判断迭代器 cursor 位置所表示的长度与集合的长度是否不相等
	return cursor != size();
2、next() :获取迭代器对象当前索引位置的元素并将索引下标移至下一个元素
3、remove() :删除参数中指定元素

Iterator 类

	boolean hasNext(); 
	E next();
	default void remove() {
        throw new UnsupportedOperationException("remove");
    } // 这个默认方法是直接抛出异常

注意:
1、Iterator 中虽然有 remove 的默认方法,但是调用时会先到实现类中找到对应的方法,也就是本例中 ArrayList 的 remove 方法

Iterator 中的 remove 方法虽然是直接抛出异常,但是它的子类有 remove 的实现方法:
	Collection 继承 Iterator,
	Collection 有很多子类,这些子类实现了 remove 方法
	举个例子 :ArrayList
	public E remove(int index) {
        rangeCheck(index);
        modCount++;
        E oldValue = elementData(index);
        int numMoved = size - index - 1;
        if (numMoved > 0)
            System.arraycopy(elementData, index+1, elementData, index,
                             numMoved);
        elementData[--size] = null; // clear to let GC do its work
        return oldValue;
    }

总结:

1、因为集合没有索引,所以不能用索引来获取元素的
2、集合只能使用迭代器挨个遍历元素
3、调用方法时会先到子类中找对应的方法,没有的话才会执行默认方法
4、hasNext() 方法用来表示当前索引位置有没有元素
5、next() 方法用来获取当前索引位置的元素并将下标移至下一个元素
6、当需要对索引位置的元素进行操作,只能通过迭代器对象来调用方法,不然会抛出 ConcurrentModificationException 异常,也就是并发修改异常

欢迎补充

最后

以上就是虚拟铃铛为你收集整理的关于迭代器 Iterator 中 hasNext 和 next 方法的全部内容,希望文章能够帮你解决关于迭代器 Iterator 中 hasNext 和 next 方法所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部