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

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

目录

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+房源

IDEA(八)常用插件推荐 阅读详情

相关推荐

java源码注释翻译

java源码注释翻译: 批量将源码文件夹下所有文件子文件夹下类注释翻译为中文注释(调用百度翻译api接口), 欢迎大伙完善,评论!(在代码中成长!)。

JDK1.7 api文档英文原版

JDK1.7版本的api文档,英文原版的

JDK8源码 注释附带中文翻译

压缩包中为JDK8的源码,在源码注释下方附带的中文翻译,是本压缩包的亮点,下方为局部代码,示范给大家: * Sole constructor. Programmers cannot invoke this constructor. * It is for use by code emitted by the compiler in response to * enum type declarations. * * *  唯一构造函数。程序员不能调用此构造函数。它由编译器响应枚举类型声明时发出的代码使用。

JDK源码中的英文注释翻译(Class)

public final class Class<T> implements java.io.Serializable, GenericDeclaration, Type, AnnotatedElement Class类的实例表示在java运行时的类接口。枚举是一种类,注解是一种接口。所有的数组也有相应的类,具有相同类型元素长度的数组共享一个类。原始数据类型(boolean, b...

weixin_30908103的博客 574

idea中java源码英文注释翻译

两个步骤:安装translation插件、设置翻译引擎

weixin_60295313的博客 1559

Java源码阅读神器之Translation翻译插件

Translation插件主要是用来翻译工作的,我们学习源码时,遇到注释有不认识的单词时需粘贴到某某翻译查看,使用此插件在当前界面通过快捷键或鼠标右击的方式即可完成翻译工作中。

qq_38939215的博客 7298

Java Function源码总结 Function源码注释翻译解析英文对照版

版本 JDK8(JDK1.8) Function接口重点 1.Function是一个函数式接口,只有一个虚方法R apply(T t),表示传入一个输入值T,返回一个经过处理的输出值R,还有两个默认方法一个静态方法 2.Function接口方法 方法名 作用 R apply(T t) 传入一个输入值T,返回一个经过处理的输出值R Function compose(Function before) 返回一个先对T执行before的apply的处理,再执行this.apply处理的组合 F

weixin_45754452的博客 656

Java Comparable源码总结 Comparable源码注释翻译解析英文对照版

版本 JDK8(JDK1.8) Comparable接口重点 Comparable是一个函数式接口,里面只有一个compareTo(T o)方法,实现Comparable接口的类意味着是可比较的类 Comparable接口Comparator接口非常容易混淆,Comparator接口虽然也是一个函数式接口其虚方法为compare(T o1, T o2) 这个方法**compareTo(T o)**调用方式有明显不同,所以还是很好区分的,Comparator接口里面还定义了很多静态方法默认方法 com

weixin_45754452的博客 545

JDK API 中英文版 在线版、下载地址

JDK 1.7 API * HTML 格式(在线英文) http://docs.oracle.com/javase/7/docs/api/ * zip 格式(英文) http://download.oracle.com/otn-pub/java/jdk/7u11-b21/jdk-7u11-apidocs.zip * CHM 格式(英文) http://download.csd

酒樽舞曲的博客 5万+

java源码注释翻译器_Netty源码注释翻译-Channel类

定义为一个通往网络socket或者一个由I/O读写能力的组件。通道提供:1,通道的当前状态,打开?已连接?2,跟通道关联的配置信息ChannelConfig,包括buffer大小等。3,通道支持的I/O操作,如读、写、连接、绑定等。4,跟通道关联的ChannelPipeline,用来处理通道的I/O事件请求。所有的I/O操作都是异步的。在Netty中,左右的I/O操作都是异步的,这意味着任何的I...

weixin_42357981的博客 300

jdk8-HashMap源码注释中文翻译

两个非常重要的方法,一个是putVal,一个是resize,有注释,需要看看。 /* * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms....

赣江 2313

java翻译工具

java写的翻译工具,可以将java代码翻译成c++代码

google翻译 java实现

通过调用google的在线翻译功能实现翻译,然后再把翻译结果从响应页面中爬出来 实现txt文件的翻译

java7源码翻译-recap-spring:回顾春天

java7源码翻译回顾春天 Spring 1.0 ------> 2004 Spring 2.0 ------> 2006 -- Simplified XML Config Spring 2.5 ------> 2007 -- Annotation Config Spring 3.0 ------> 2010 - 2012 Spring 3.2 ------> 2012 -- Support for Java7, Hibernate, Servlet 3.0 -- Required Java 1.5+ -- Java Configuration Appraoch Spring 4.0 -------> 2014 -- Support Java 8 依赖注入 依赖项是类的属性(实例变量)(最终成为对对象的引用) 使用 setter 方法或使用构造函数参数注入依赖项。 我们使用定义要注入的依赖项的 xml 配置或注释来定义元数据。 注入依赖的过程称为连接,它将所有连接的对象放入 spring 容器中。 Spring 管理 bean 的生命周期。 Java配置 Spring 假设它创建的对象

Java Array源码总结 Array源码注释翻译解析英文对照版

版本 JDK8(JDK1.8) Array final类(无法被继承)源码重点 1.Array类提供静态方法来动态创建访问Java数组。 2.Array允许在get或set操作期间进行加宽转换,但如果发生缩小转换,则抛出IllegalArgumentException,这里的加宽指的是字节范围加宽,如int->double是合法的,而不是指数组长度加宽 3.Array类内部有两个私有原生方法用于创建数组,newArraymultiNewArray, 分别对应创建一维数组创建多维数组 4.Arra

weixin_45754452的博客 446

JAVA代码翻译更新(第五

[YDWEGetBoolexprByInteger] title = "获取 布尔表达式 (整数路径)" description = "从存储目录-> ${整数},标签-> ${整数} 上获取布尔表达式" comment = "通过输入的路径,系统会根据当前魔兽版本从缓存或HashTable上获取布尔表达式数据。" category = TC_YDLD returns = boolexpr keynum = 2 type1 = integer min1 = 0 type2 = integer min2 =

qq_58575895的博客 629

java代码注释翻译

翻译注释部分的格式会乱,不过可以手工进行整理。 翻译后的文件直接覆盖了原文件,以防万一请先对原文件夹进行备份。

wzjin的专栏 3479

java 代码翻译

题目:输入一个以’@’结束的字符串,从左至右翻译。若下一个字符是数字n(0≤n≤9),表示后一个字符重复n+1 次,不论后一个字符是否为数字;若下一个字符非数字,则表示自己。翻译后,以3 个字符为一组输出,组与组之间用空格分开。例如’A2B5E34FG0ZYWPQ59R@’,翻译成’ABB_BEE_EEE_E44_44F_GZY_WPQ_999_999_R@ ’。 分析:首先直接遍历数组把字符串

Chengliangyao的博客 7282
上一篇: tcp/ip 探秘(二) : 信息交换方式的演变
下一篇: 为什么Collection接口的remove方法参数类型是Object而不是类型参数(泛型)
祥先生
博客等级 码龄14年 48粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值