首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java 8内部迭代

Java 8内部迭代
EN

Stack Overflow用户
提问于 2014-01-23 16:10:57
回答 4查看 1.4K关注 0票数 2

内部迭代是只使用Collection对象的Collection方法执行,还是使用Stream的方法(如filterreduce等)执行?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-01-23 17:49:48

也许你应该先用“外部迭代”一词来定义你所理解的东西。由于在调用filtermapreduce时不编写循环程序,所以从定义上讲,它不是外部迭代。

您可以尝试更改您的观点,并查看filtermapreduce方法。但是,在试图理解这个概念时,查看实现并不一定有用。

在执行filtermapreduce时,您是根据PredicateFunctionBiFunctionBinaryOperator定义操作。而且它们都不会使用Iterator实现一个循环,因此它仍然不是一个外部循环。

您似乎想知道迭代代码是碰巧在Collection类中还是在Stream类中,但这并不是一个重要的实现细节,因为这些都是同一个库/框架的一部分,因此在任何情况下迭代都被认为是“内部的”。

即使是第三个选项,即有另一方,执行循环的Spliterator也不会改变迭代的性质。对于内部迭代来说,这是典型的,您第一眼就看不出迭代在哪里发生。

票数 4
EN

Stack Overflow用户

发布于 2014-01-23 16:18:24

从根本上说,要对集合的所有成员进行操作,需要对它们进行迭代。

它的确切方式可能会根据集合和操作而改变,但它需要发生的事实是不可避免的。

票数 5
EN

Stack Overflow用户

发布于 2014-01-23 16:25:42

正如@Tim B指出的那样,存在内部迭代,但并非所有项都会被处理。有过滤和短路,当你链几个操作,以避免不必要的计算.

参考这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21313525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档