java源码英文注释翻译和解析(基于jdk1.7)-集合篇-Iterable&Iterator(接口)

目录

1.接口概述:

2.源码翻译&解析:


1.接口概述:

        Iterable:该接口只有一个方法iterator(),此方法作用是获取一组元素的迭代器。当一个类实现了该接口,可以用foreach语法糖遍历该类元素,在编译阶段foreach语法糖会转换为调用iterator()方法获取迭代器遍历元素。容器根接口Collection继承Iterable,意味着所有的List、Set和Queue都要默认实现Iterable接口,提供统一的迭代器对象遍历元素。

        Iterator:该接口拥有方法hasNext()、next()、remove(),当一个类实现该接口或者提供了获取迭代器对象的方法,就可以迭代遍历查询或删除该类元素。容器根接口Collection继承Iterable返回迭代器对象,该迭代器对象统一了对容器的访问方式,与具体容器分离(比如list有ArrayList和LinkedList,ArrayList是基于数组的容器,LinkedList是基于链表的容器,如果不使用迭代器,要遍历ArrayList和LinkedList的元素,需要先阅读ArrayList和LinkedList的api文档,找到遍历方法的说明。另外LinkedList的get(int i)遍历获取元素每次都要重新遍历链表,效率很低)。使用容器时如果对容器的具体实现方式不了解时,优先使用Iterator遍历容器。

2.源码翻译&解析:

Iterable源码翻译&解析

/**
 * 实现此接口允许(该实现类的)对象使用“foreach”语句(注:foreach语法糖实际调用iterator()方法)
 *
 * @since 1.5
 */
public interface Iterable<T> {

    /**
     * 返回一组T类型元素的迭代器
     */
    Iterator<T> iterator();
}

Iterator源码翻译&解析

/**
 * 容器迭代器。Iterator取代了Java容器框架的Enumeration(注:枚举器)。迭代器和枚举器在两方面不同:
 *   1.迭代器允许调用者在迭代期间使用明确定义的语义删除元素
     (注:也不是绝对的,这里针对的是老版本的枚举器,在后来版本中的枚举器也提供了删除方法)
 *
 *   2.方法名称改进了(注:方法名称更短、更简洁了)
 * @since 1.2
 */
public interface Iterator<E> {
    /**
     * 如果迭代器还有更多元素则返回true(换句话说, 如果next()方法返回了一个元素而没抛出异常,则返回true)
     */
    boolean hasNext();

    /**
     * 返回迭代器的下一个元素
     * @throws NoSuchElementException 如果迭代器没有元素
     */
    E next();

    /**
     * 从底层容器中删除最后一个返回的元素(可选操作)(注:也可以通过其他方法删除元素,如list也能通过remove方法删除)。
       对next()方法的每次调用只能调用一次该方法(注:一次next迭代只能调用一次删除方法)。
       如果在迭代过程中用其他方式而不用这个方法修改了容器,那么迭代器的行为将不明确
       (注:此处和单线程、多线程无关,例如在迭代ArrayList的过程中,如果用ArrayList的remove方法而不是迭代器方法删除元素,
       那么调用迭代器的方法next()和remove()时,会抛出异常ConcurrentModificationException, 此异常出现代表程序存在bug,
       应及时修复,不能用此异常检测多线程并发操作)
     *
     * @throws UnsupportedOperationException 如果这个迭代器不支持删除操作
     *
     * @throws IllegalStateException 如果next()方法没被调用或者在调用最后一个next方法之后被调用(注:一次next()方法只能调用一次remove()方法,还有最后一个末尾next()方法也不能调用remove()方法)
     */
    void remove();
}

 👉👉👉 自己搭建的租房网站:全网租房助手,m.kuairent.com,每天新增 500+房源

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值