Java 8 forEach use cases



假设您有一个带有一些字符串的集合,您想返回每个字符串的前两个字符(或其他某些操纵...)。

在Java 8中,对于这种情况,您可以使用您从集合中获得的mapforEach方法(也许是其他的)。

>

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

那么,应该选择forEach的用例?

map是这样的更好的选择,因为您还没有尝试 do 与字符串的任何东西,只需将它们映射到不同的字符串。

forEach设计为"最终操作"。因此,它不会返回任何内容,而是关于突变某些状态 - 尽管不一定是原始集合的状态。例如,您可以使用它将元素写入文件,而使用其他构造(包括map)来获取这些元素。

forEach终止流并因称为 Cosumer的副作用而被视为。它不一定会突变流成员。

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

forEach终端操作在几种情况下可能很有用:当您要收集一些较旧的班级时,您没有合适的收集器或不想收集时完全,但是将数据发送到外面的某个地方(写入数据库,打印到OutputStream等)。在很多情况下,最好的方法是同时使用map(作为中间操作)和forEach(作为终端操作)。

最新更新