我研究了Java.util包的基本接口和类。现在接口Set是Collection和Iterable的子类,所以Set有Iterator模块。那么为什么我使用Iterator接口的参考?
Iterator<String> iterx = x.iterator();
Iteratr也是一个界面。但我还没有看到关于Iterable接口和Iterator接口的任何关系。 Iterable有一个名为Iterator的模块。写
是不正确的Iterable.Iterator iterx = x.iterator();
因为x.iterator调用了Iterable继承的Set的模块,并且没有调用Iterator接口。
我不明白的是什么?
答案 0 :(得分:0)
Iterable接口表示特定Collection是可迭代的,这意味着您可以使用Iterator迭代它。
它只有一个方法,即iterator()返回一个Iterator。任何收藏例如实现Iterable的列表提供了iterator()方法的实现。
Iterator也是一个接口,它定义了它提供的next(),hasNext()和remove()方法的迭代过程,该方法可用于控制迭代,访问元素并将其删除。
答案 1 :(得分:0)
您使用Iterator<String>
的原因与您在
String
的原因相同
String stringx = x.toString()
方法(“module”的正确名称)声明它返回该类型的对象。方法可以返回任何不相关的类型,您必须调整并使用它们为您提供的变量类型。
Iterator
在概念上与Iterable
相关,但它们不会相互继承。实际上,Iterator
授予您访问与生成它的Iterable
相同数据的惯例。
但是Iterator
的设计/约定是你可以在迭代器的生命周期中对项目集合迭代一次(重复hasNext()
?Ok给{{ 1}}!一遍又一遍,直到没有下一个。)如果你想再次迭代,你必须得到一个新的next()
。这是Iterator
的责任:每次提出时都会产生新的Iterable
。