在流的地图上使用匿名函数

时间:2019-04-05 09:11:08

标签: java java-stream

我有一个要用设置器之一修改的对象列表,这样在匿名映射中调用它很不好,并且可能会有哪些副作用:

.stream().map(foo -> { foo.setDate(date);return foo;})
            .collect(Collectors.toList()));

Intellij告诉我将其切换为窥视

.stream().peek(foo -> foo.setDate(date).collect(Collectors.toList()));

但是我读到peek应该只用于调试。我应该避免两种方式吗?

2 个答案:

答案 0 :(得分:2)

在这种情况下,第一种方法比OK更为重要,重要的是您不必从结构上更改流的来源,这意味着在流的 中添加/删除元素。

事实上IntelliJ对此是错误的,mappeek更适合(仅用于调试)。

答案 1 :(得分:2)

您为什么不使用foreach

.forEach(foo -> { foo.setDate(date);})

您甚至不需要stream收藏。

您还将节省创建新收藏集的成本。