[Java进阶] 迭代器Iterator原理

本文详细介绍了Java中迭代器Iterator的工作原理,包括如何使用迭代器遍历集合,源码解析,迭代器的跳索引操作,以及在迭代器内部进行增删元素的注意事项。特别强调了在迭代过程中不应直接使用集合的add或remove方法,而应使用迭代器自身的remove()方法来安全删除元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

使用迭代器

迭代器原理(源码)

跳索引

迭代器内增删

注意事项


在单列集合中, 只有List接口和其实现类中能使用get方法获取索引的内容, 其他的Collection实现类是没有办法通过遍历获取集合中内容的,针对没有索引概念的单列集合, 可以使用迭代器遍历

Collection接口继承了Iterable接口, 具备了获取迭代器的能力.

另外Collection实现类又实现了Iterator类 , 可以拥有迭代获取元素的方式.

使用迭代器

Collection<String> c = new ArrayList<>();
//1.获取迭代器对象
Iterator<String> it = c.Iterator();
//2.判断迭代器指向的内容后是否还有元素
while(it.hasNext()){
    //3.如果有,返回这个元素
    String s = it.next();
    System.out.println(s);

}

迭代器原理(源码)

Collection继承了Iterable接口, 具备了获取迭代器的能力.

当ArrayList使用iterator方法, 会返回一个Iterator对象,

里面封装了指向当前索引的cursor, 上一个返回内容的索引lastRet, 以及对比modCount值(在迭代器中是不允许出现对集合长度修改的情况,如add/remove)

//ArrayList中构造器部分源码
    public Iterator<E>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值