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

本文主要是介绍java源码英文注释翻译和解析(基于jdk1.7)-集合篇-IterableIterator(接口),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

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

这篇关于java源码英文注释翻译和解析(基于jdk1.7)-集合篇-IterableIterator(接口)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/940463

相关文章

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

Spring boot整合dubbo+zookeeper的详细过程

《Springboot整合dubbo+zookeeper的详细过程》本文讲解SpringBoot整合Dubbo与Zookeeper实现API、Provider、Consumer模式,包含依赖配置、... 目录Spring boot整合dubbo+zookeeper1.创建父工程2.父工程引入依赖3.创建ap

MyBatis中$与#的区别解析

《MyBatis中$与#的区别解析》文章浏览阅读314次,点赞4次,收藏6次。MyBatis使用#{}作为参数占位符时,会创建预处理语句(PreparedStatement),并将参数值作为预处理语句... 目录一、介绍二、sql注入风险实例一、介绍#(井号):MyBATis使用#{}作为参数占位符时,会

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

Spring Boot spring-boot-maven-plugin 参数配置详解(最新推荐)

《SpringBootspring-boot-maven-plugin参数配置详解(最新推荐)》文章介绍了SpringBootMaven插件的5个核心目标(repackage、run、start... 目录一 spring-boot-maven-plugin 插件的5个Goals二 应用场景1 重新打包应用

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

创建Java keystore文件的完整指南及详细步骤

《创建Javakeystore文件的完整指南及详细步骤》本文详解Java中keystore的创建与配置,涵盖私钥管理、自签名与CA证书生成、SSL/TLS应用,强调安全存储及验证机制,确保通信加密和... 目录1. 秘密键(私钥)的理解与管理私钥的定义与重要性私钥的管理策略私钥的生成与存储2. 证书的创建与

浅析Spring如何控制Bean的加载顺序

《浅析Spring如何控制Bean的加载顺序》在大多数情况下,我们不需要手动控制Bean的加载顺序,因为Spring的IoC容器足够智能,但在某些特殊场景下,这种隐式的依赖关系可能不存在,下面我们就来... 目录核心原则:依赖驱动加载手动控制 Bean 加载顺序的方法方法 1:使用@DependsOn(最直