iteratorable和iterable

Iterable

一个集合对象要表明自己支持迭代,能有使用foreach语句的特权,就必须实现Iterable接口,表明我是可迭代的!然而实现Iterable接口,就必需为foreach语句提供一个迭代器。

这个迭代器是用接口定义的 iterator方法提供的。也就是iterator方法需要返回一个Iterator对象。


public interface Iterable<T>

{


    Iterator<T> iterator();

}

Iterator

 包含3个方法: hasNext ,  next , remove。remove按需求实现,一般它很少用到,以至于Eclipse接口方法自动补全时,都忽略了remove放方法。

1、每次在迭代前   ,先调用hasNext()探测是否迭代到终点(本次还能再迭代吗?)。

2、next方法不仅要返回当前元素,还要后移游标cursor

3、remove()方法用来删除最近一次已经迭代出的元素

4、 迭代出的元素是原集合中元素的拷贝(重要)

5、配合foreach使用

6删除最近一次已近迭代出出去的那个元素。

    只有当next执行完后,才能调用remove函数。

    比如你要删除第一个元素,不能直接调用 remove()  而要先next一下( );

    在没有先调用next 就调用remove方法是会抛出异常的。



迭代出来的元素都是原来集合元素的拷贝

Java集合中保存的元素实质是对象的引用(可以理解为C中的指针),而非对象本身。

迭代出的元素也就都是 引用的拷贝,结果还是引用。那么,如果集合中保存的元素是可变类型的,我们就可以通过迭代出的元素修改原集合中的对象。

而对于不可变类型,如String  基本元素的包装类型Integer 都是则不会反应到原集合中。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容