并且他们都得到一个消费者作为参数。所以如果 Java 8 是为了避免混淆,就像它在 Time API 中所做的那样,为什么它增加了一个新的混淆?还是我遗漏了什么?
最佳答案
要理解为什么这两种方法都存在,首先需要理解什么是Iterator
和Iterable
。
Iterator
基本上是具有“下一个元素”并且通常是结束的东西。
Iterable
是包含有限或无限序列元素的东西,因此可以通过不断获取下一个元素来迭代。换句话说,Iterable
可以被 Iterator
迭代。
既然你明白了这一点,我可以谈谈这两种方法之间的区别。
让我们以数组列表为例。这是数组列表中的内容:
[1, 3, 6, 8, 0]
现在,如果我调用 Iterable.forEach()
并传入 System.out::print()
,将打印 13680
。这是因为 Iterable.forEach
遍历整个元素序列。
另一方面,如果我得到数组列表的 Iterator
并在用 调用
,将打印forEachRemaining
之前调用 next
两次System.out::print()680
。 Iterator
已经迭代了前两个元素,所以“剩下的”是 6、8 和 0。
关于java - 同时拥有 Iterator.forEachRemaining() 和 Iterable.forEach() 有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42465871/