有Iterator.forEachRemaining()和Iterable.forEach()的重点是什么?

mos*_*a.S 12 java foreach iterator iterable

并且它们都获得Consumer作为参数.因此,如果Java 8是为了避免混淆,就像它在Time API中所做的那样,为什么它会增加一个新的混乱?还是我错过了一些观点?

Swe*_*per 49

要理解为什么这两种方法都存在,你需要先了解什么是IteratorIterable.

一个Iterator基本的东西,有一个"未来元素",通常,一个结束.

An Iterable是包含有限或无限序列中的元素的东西,因此可以通过继续获取下一个元素来迭代.换句话说,Iterables可以被s迭代Iterator.

既然你理解了这一点,我就可以谈谈这两种方法之间的区别.

我们以数组列表为例.这是数组列表中的内容:

[1, 3, 6, 8, 0]
Run Code Online (Sandbox Code Playgroud)

现在,如果我打电话Iterable.forEach()并传入System.out::print(),13680将被打印.这是因为Iterable.forEach遍历整个元素序列.

另一方面,如果我获得了Iterator数组列表并且next在调用之前调用forEachRemaining了两次System.out::print(),680则会打印出来.在Iterator已经通过前两个元素迭代,因此,"剩余"的有6,8和0.

  • 好的,但是 forEach() 和 forEachRemaining() 之间的区别在哪里?https://pl.kotl.in/ehW6pBa5t (3认同)