美文网首页java
iteratorable和iterable

iteratorable和iterable

作者: 一个人的飘 | 来源:发表于2018-10-07 13:07 被阅读0次

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 都是则不会反应到原集合中。

相关文章

  • iteratorable和iterable

    Iterable 一个集合对象要表明自己支持迭代,能有使用foreach语句的特权,就必须实现Iterable接口...

  • iterable和iterator

    我们常用的迭代器是个对象,网上常说,它所属的类需要满足以下条件:1. __iter__返回本身2. __next_...

  • Iterable和Iterator之间的区别以及延伸讨论

    本文会讨论几个问题 Iterable和Iterator的区别 讨论为什么需要Iterable和Iterator,只...

  • 基础语法-iterable

    Array、Map和Set都属于iterable类型,具有iterable类型的集合可以通过新的for ... o...

  • Iterable 和 Iterator接口

    如果一个类实现 Iterable 和 Iterator接口 之后就可以使用foreach遍历 问题 ①直接实现I...

  • Iterator和Iterable解析

    之前一直搞不清楚Iterator和Iterable到底有什么关系,它们的区别是什么,今天查看Java集合类源码才发...

  • [JavaScript] iterator和iterable

    1. iterator iterator是具有无参next方法的对象,这个next方法返回{value: anyt...

  • 关于Iterator和Iterable

    1.Iterable 实现 Iterable 的类,可以进行 for-each loop。 iterator 是 ...

  • Map和Set、iterable

    1、Map是一组键值对的结构,相比于数组Array,具有很强的查找速度2、 3、Set不像Map,Set是一组键(...

  • dart Iterable、Stream

    Iterable迭代器 Iterable.empty()创建空Iterable。const factory Ite...

网友评论

    本文标题:iteratorable和iterable

    本文链接:https://www.haomeiwen.com/subject/rerlaftx.html