我对Java还很陌生,今天我试图理解迭代器的使用。
所以我有几个问题:
>
为什么我需要实现Iterable呢?它只提供了一个为集合创建新迭代器的方法,但如果我想获取所有元素,我也可以使用普通的或增强的for循环。我已经读过这个问题:可迭代接口用于什么?还有更多,但他们只是说它允许你遍历所有元素,这又回到了我的问题。
如果我实现了Iterable,我也应该实现迭代器吗
因为这一个实际上提供了可用于覆盖的方法<例如,如果我的类有一个布尔值,无论我是否希望我的对象处于循环中,我可以编写
public boolean hasNext() {
if(loop)
return true;
//other things
}
如果我真的像2中说的那样。,增强的for循环会使用这些被覆盖的方法吗?< br >例如上面提到的loop属性:如果For循环为true,它会无限运行吗?
我希望有人能帮助我更好地理解整个概念。
如果您正在定义一个集合,那么您正在实现一个< code>Iterable。例如,如果您想要创建一个自定义列表,您通常会使它成为< code>AbstractList的子类,它本身扩展了< code>AbstractCollection,后者实现了< code>Collection,后者实现了< code>Iterable。因此,您的列表将“事实上”是< code >可迭代的。
但是如果您子类AbstractList
,您不必自己实现迭代器,因为此方法已经在那里实现了。也就是说,您可能希望为您的需求提供一个专门的迭代器。
当您实现Iterable
时(如果您真的愿意),您会返回一个Iterator
。集合本身不应该实现Iterator
,只实现返回的迭代器。查看AbstractList
源代码,以获取示例以了解它是如何完成的。
当您使用增强的for循环时,您使用的是可迭代的
。增强的for循环只是<code>迭代器()返回的迭代器上循环的语法糖。。这意味着编译器转换代码以使用迭代器。这就是为什么要在增强的for循环中使用集合,必须实现<code>Iterable
本文向大家介绍对Python中Iterator和Iterable的区别详解,包括了对Python中Iterator和Iterable的区别详解的使用技巧和注意事项,需要的朋友参考一下 Python中 list,truple,str,dict这些都可以被迭代,但他们并不是迭代器。为什么? 因为和迭代器相比有一个很大的不同,list/truple/map/dict这些数据的大小是确定的,也就是说有多少
问题内容: 我是一个初学者,我无法理解界面的实际效果。 问题答案: 除了Jeremy所说的以外,它的主要好处是它具有自己的语法糖:增强的for- loop 。如果您有个,则可以执行以下操作: 很好很容易,不是吗?编译器会在后台处理创建,检查它和调用的所有肮脏工作。 而且由于大多数集合都实现了或具有返回一个视图的视图(例如的或),所以这使使用集合更加容易。 该的Javadoc给出了实现类的完整列表。
问题内容: 我试图了解Java 和接口 我正在写这堂课 它似乎正在工作。 我应该有: 或者我应该把外面的 哪一个更好? 问题答案: 你应该几乎 从来没有 同时实现,并在同一个班。他们做不同的事情。迭代器自然是 有状态的 -当您迭代使用它时,它必须更新其世界观。但是,迭代器仅需要能够创建新的迭代器。特别是,您可能有多个迭代器同时处理同一个原始可迭代对象。 您当前的方法几乎可以-我会更改实现的某些方面
问题内容: 给定以下代码,如何遍历ProfileCollection类型的对象? 问题答案: Iterable是通用接口。您可能遇到的问题(实际上并没有说出您遇到的问题,如果有的话)是,如果使用通用接口/类而不指定类型实参,则可以擦除不相关的通用类型在课堂上。 因此,我至少将其更改为: 这应该工作: 在Iterable上没有type参数的情况下,迭代器可以简化为Object类型,因此只有这样才能起
本文向大家介绍在Java中将Iterator转换为Iterable,包括了在Java中将Iterator转换为Iterable的使用技巧和注意事项,需要的朋友参考一下 假设以下是具有整数值的迭代器- 现在,将Iterator转换为Iterable- 示例 以下是在Java中将Iterator转换为Iterable的程序- 输出结果
本文向大家介绍ES6 Iterator接口和for...of循环用法分析,包括了ES6 Iterator接口和for...of循环用法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了ES6 Iterator接口和for...of循环用法。分享给大家供大家参考,具体如下: 运行结果: for...of循环,就是不断的调用Iterator接口。 object数据结构没有实现Iterator