内部迭代是只使用Collection
对象的Collection
方法执行,还是使用Stream
的方法(如filter
、reduce
等)执行?
发布于 2014-01-23 17:49:48
也许你应该先用“外部迭代”一词来定义你所理解的东西。由于在调用filter
、map
或reduce
时不编写循环程序,所以从定义上讲,它不是外部迭代。
您可以尝试更改您的观点,并查看filter
、map
或reduce
方法。但是,在试图理解这个概念时,查看实现并不一定有用。
在执行filter
、map
或reduce
时,您是根据Predicate
、Function
、BiFunction
或BinaryOperator
定义操作。而且它们都不会使用Iterator
实现一个循环,因此它仍然不是一个外部循环。
您似乎想知道迭代代码是碰巧在Collection
类中还是在Stream
类中,但这并不是一个重要的实现细节,因为这些都是同一个库/框架的一部分,因此在任何情况下迭代都被认为是“内部的”。
即使是第三个选项,即有另一方,执行循环的Spliterator
也不会改变迭代的性质。对于内部迭代来说,这是典型的,您第一眼就看不出迭代在哪里发生。
发布于 2014-01-23 16:18:24
从根本上说,要对集合的所有成员进行操作,需要对它们进行迭代。
它的确切方式可能会根据集合和操作而改变,但它需要发生的事实是不可避免的。
https://stackoverflow.com/questions/21313525
复制相似问题