迭代知识点

迭代

我们在便利一个集合的时候用到过增强for循环,对于增强for循环的底层实现就是迭代器,编译器会将我们写的for循环转换成类似如下代码:

具体方法注解:

迭代器

要想使用迭代器,就要实现Iterable接口,Iterable表示可迭代。

Iterator接口中包含4个方法:

jana.util.Iterator<E>

boolean hasNext ( )

如果存在另一个可访问的元素,返回true。

E next()

返回将要访问的下一个对象。如果已经到达了集合的未尾,将抛出一个NoSuhElementException。

void remove()

删除上次访问的对象。这个方法必须紧跟在访问一个元素之后执行。如果上次访问之后集合已经发生了变化,这个方法将抛出一个iIlegalStateException。

default void forEachRemaining(Consumer<? super E> action) 8

访问元素,并传递到指定的动作,直到再没有更多元素,或者这个动作抛出一个异常。

通过反复调用next方法,可以逐个访问集合中的每个元素。但是,如果到达了集合的末尾,next方法将抛出一个NoSuchElementException。因此,需要在调用next之前调用hasNext方法。如果迭代器对象还有多个可以访问的元素,这个方法就返回true。如果想要查看集合中的所有元素,就请求一个迭代器,当hasNext返回true时就反复地调用next方法。

在java迭代器中,查找一个元素的唯一方法就是调用next()方法,在执行查找操作的同时,迭代器的位置就会随之向前移动,因此,我们可以认为Java迭代器位于两个元素之间。当调用next时,迭代器就会越过下一个元素并且返回刚刚越过的那个元素的引用,到下一个元素和下下个元素的中间。

Iterable接口的remove方法将会删除上次调用next方法时返回的元素,如果想要删除指定位置上的元素,仍需要越过这个元素。因此next方法和remove方法具有依赖性。如果调用remove方法之前没有调用next方法,就会抛出异常illegalStateException。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值