根据 SE8 Iterator 和 Iterable 接口的区别
difference between Iterator and Iterable interfaces according to SE8
我正在浏览 Java 8 的 Iterator 和 Iterable 接口的文档。请在下面找到文档的链接。我无法特别理解其中的区别,因为最近添加的 Iterator 的 forEachRemaining 方法似乎与 Iterable 的 forEach 方法非常相似。如果有人能帮助我理解上述方法之间的区别以及 Iterator 和 Iterable 之间的区别以及它们根据最新版本各自的用途,我将不胜感激 java 8.
在查看接口文档时,您应该主要关注非 default
的方法,因为默认方法只是使用其他非默认方法实现的方法。
如果您只考虑非默认方法,您就会意识到 Iterable 是一个 class,它有一个 iterator()
方法返回一个 Iterator
。例如:Collection是这样一个class:每个集合都可以使用它提供的Iterator进行迭代,并且能够遍历集合。
默认方法只是在从 Iterable 中获取 Iterator 的能力之上实现的。
forEach()
从 Iterable 中获取迭代器并为 iterable 的每个 元素做一些事情。
forEachRemaining()
对迭代器的所有 remaining 元素做了一些事情(因为在调用 forEachRemaining()
).但是,是的,这两个彼此非常接近。一个显着的区别是,对于大多数可迭代对象,您可以多次调用 forEach(),并将多次遍历元素。相反,forEachRemaining()
消耗迭代器的所有元素,第二次调用它不会做任何事情,因为不再有下一个元素。
forEachRemaining()
将对所有可以使用方法 next()
从当前 Iterator
的状态.
forEach()
将对 Iterable
.
的所有元素应用操作
如果您在尚未调用 next()
的 Iterator
上使用 forEachRemaining()
,它们具有相同的效果。
但是,您可以开始使用 next()
进行迭代,直到达到特定条件,然后使用 forEachRemaining()
.
对 Iterable
的其余部分应用操作
我正在浏览 Java 8 的 Iterator 和 Iterable 接口的文档。请在下面找到文档的链接。我无法特别理解其中的区别,因为最近添加的 Iterator 的 forEachRemaining 方法似乎与 Iterable 的 forEach 方法非常相似。如果有人能帮助我理解上述方法之间的区别以及 Iterator 和 Iterable 之间的区别以及它们根据最新版本各自的用途,我将不胜感激 java 8.
在查看接口文档时,您应该主要关注非 default
的方法,因为默认方法只是使用其他非默认方法实现的方法。
如果您只考虑非默认方法,您就会意识到 Iterable 是一个 class,它有一个 iterator()
方法返回一个 Iterator
。例如:Collection是这样一个class:每个集合都可以使用它提供的Iterator进行迭代,并且能够遍历集合。
默认方法只是在从 Iterable 中获取 Iterator 的能力之上实现的。
forEach()
从 Iterable 中获取迭代器并为 iterable 的每个 元素做一些事情。
forEachRemaining()
对迭代器的所有 remaining 元素做了一些事情(因为在调用 forEachRemaining()
).但是,是的,这两个彼此非常接近。一个显着的区别是,对于大多数可迭代对象,您可以多次调用 forEach(),并将多次遍历元素。相反,forEachRemaining()
消耗迭代器的所有元素,第二次调用它不会做任何事情,因为不再有下一个元素。
forEachRemaining()
将对所有可以使用方法 next()
从当前 Iterator
的状态.
forEach()
将对 Iterable
.
如果您在尚未调用 next()
的 Iterator
上使用 forEachRemaining()
,它们具有相同的效果。
但是,您可以开始使用 next()
进行迭代,直到达到特定条件,然后使用 forEachRemaining()
.
Iterable
的其余部分应用操作