并且它们都获得Consumer作为参数。所以如果Java 8是为了避免混淆,就像它在Time API中所做的那样,为什么它会添加新的混淆?还是我错过了一些观点?Iterator.forEachRemaining()和Iterable.forEach()有什么意义?
-2
A
回答
13
要理解为什么这两种方法都存在,您需要先了解Iterator
和Iterable
。
Iterator
基本上是有一个“下一个元素”,通常是一个结束。
Iterable
是包含有限或无限序列元素的东西,因此可以通过继续获取下一个元素来重复。换句话说,Iterable
s可以被Iterator
s迭代。
现在你明白这一点,我可以谈谈这两种方法之间有什么区别。
让我们以一个数组列表为例。这是什么是数组列表中:
[1, 3, 6, 8, 0]
现在,如果我叫Iterable.forEach()
,并传递System.out::print()
,13680
将被打印出来。这是因为Iterable.forEach
遍历整个元素序列。
在另一方面,如果我得到的数组列表的Iterator
,并呼吁next
两次,调用forEachRemaining
与System.out::print()
之前,680
将被打印出来。 Iterator
已经迭代了前两个元素,所以剩下的元素是6,8和0.
+0
好吧。谢谢你的清晰和完整的答案。 –
相关问题
- 1. App ID和Provisioning Profiles有什么意义?
- 2. do |和&在Java中有什么意义?
- 3. 为什么gettimeofday()和time_t没有意义?
- 4. @property和@synthesize有什么意义?
- 5. “multiset”和“multimap” - 有什么意义?
- 6. Draggable div - 有什么意义?
- 7. HTML DTD - 有什么意义?
- 8. 为什么const有意义?
- 9. ASyncToken有什么意义?
- 10. XNA:Unload()有什么意义?
- 11. DocumentDB:“Upsert”有什么意义?
- 12. 接口有什么意义?
- 13. XPS有什么意义?
- 14. FILL_AND_STROKE有什么意义?
- 15. Html.DisplayTextFor()有什么意义?
- 16. setArguments有什么意义?
- 17. DOCTYPE有什么意义?
- 18. OpenClipboard API有什么意义?
- 19. document.defaultView有什么意义?
- 20. tornado.locale.Locale.translate有什么意义?
- 21. NSRange.toRange()有什么意义?
- 22. aclocal有什么意义?
- 23. Convert.ToDateTime(bool)有什么意义?
- 24. setRetainsRegisteredObjects有什么意义?
- 25. 或门有什么意义?
- 26. 豆有什么意义?
- 27. 有什么意义 “[=]” 以CPP
- 28. java框架有什么意义?
- 29. //在bash中有什么意义?
- 30. “typedef sometype sometype”有什么意义?
你想比较'Iterator'和'Iterable'吗? http://stackoverflow.com/questions/6863182/what-is-the-difference-between-iterator-and-iterable-and-how-to-use-them – nullpointer
这是如何混淆?这些是两个不同的接口,方法的名称非常清楚地表明它们做了什么。 –
@JBNizet所有正确的家伙,不要把西红柿扔在我身上!我明白了:D –