概述
前言:虽然集合没有索引,但是为了方便说明迭代器的方法,就先引用索引这个名词,实际上集合是不能用索引来获取元素的
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 方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复