java - 同时拥有 Iterator.forEachRemaining() 和 Iterable.forEach() 有什么意义?

标签 java foreach iterator iterable

并且他们都得到一个消费者作为参数。所以如果 Java 8 是为了避免混淆,就像它在 Time API 中所做的那样,为什么它增加了一个新的混淆?还是我遗漏了什么?

最佳答案

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

Iterator 基本上是具有“下一个元素”并且通常是结束的东西。

Iterable 是包含有限或无限序列元素的东西,因此可以通过不断获取下一个元素来迭代。换句话说,Iterable 可以被 Iterator 迭代。

既然你明白了这一点,我可以谈谈这两种方法之间的区别。

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

[1, 3, 6, 8, 0]

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

另一方面,如果我得到数组列表的 Iterator 并在用 调用 forEachRemaining 之前调用 next 两次System.out::print(),将打印680Iterator 已经迭代了前两个元素,所以“剩下的”是 6、8 和 0。

关于java - 同时拥有 Iterator.forEachRemaining() 和 Iterable.forEach() 有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42465871/

相关文章:

java - 通过 SSH 在远程计算机上运行 jar 时未创建日志

Java并手动执行finalize

php - 如何使用 PHP 的强大功能将多个输入插入到数据库中?

javascript - TypeError : [1, 2, 3].foreach 不是函数

c++ - 过滤模板函数的特定迭代器

java - 从 Java 使用 Scala 的 Either, Right 和 Left

java - 让简单的 Java 发挥作用

map - 如何从映射中将键和值导入变量?

C++:模板代码在 clang++ 下编译和运行良好,但在 g++ 下失败

c++ - 迭代器与非迭代器循环,不同的输出,C++