首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java8 forEach用例

Java8 forEach用例
EN

Stack Overflow用户
提问于 2015-05-11 14:47:30
回答 3查看 274关注 0票数 2

假设您有一个包含一些字符串的集合,并且希望返回每个字符串的前两个字符(或者其他一些操作.)。

在Java8中,在这种情况下,您可以使用从集合中获得的流()上的mapforEach方法(可能是其他方法,但这现在并不重要)。

就我个人而言,我会使用map,主要是因为我将forEach与突变集合联系在一起,我希望避免这种情况。我还创建了一个关于性能的非常小的测试,但在使用forEach时看不到任何改进(我完全理解小型测试不能给出可靠的结果,但仍然如此)。

那么应该选择forEach的用例是什么呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-11 14:52:36

map是更好的选择,因为您还没有尝试对字符串做任何事情,只需将它们映射到不同的字符串。

forEach被设计成“最后的操作”。因此,它不返回任何东西,而是要改变某种状态--尽管不一定是原始集合的状态。例如,您可以使用它将元素写入文件,并使用其他构造(包括map)来获取这些元素。

票数 4
EN

Stack Overflow用户

发布于 2015-05-11 14:51:19

forEach终止流并由于被称为Cosumer的副作用而被执行。它不一定会使流成员发生变异。

map使用提供的Function将每个流元素映射到不同的值/对象。返回一个可以执行更多步骤的Stream <R>

票数 3
EN

Stack Overflow用户

发布于 2015-05-11 14:56:37

在几种情况下,forEach终端操作可能很有用:当您想要收集到某个您没有适当收集器的旧类时,或者您根本不想收集数据,而是将数据发送到外部某个地方(写入数据库,打印到OutputStream等)。在许多情况下,最好的方法是同时使用map (作为中间操作)和forEach (作为终端操作)。

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

https://stackoverflow.com/questions/30170804

复制
相关文章

相似问题

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