美文网首页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

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