我有一个要用设置器之一修改的对象列表,这样在匿名映射中调用它很不好,并且可能会有哪些副作用:
.stream().map(foo -> { foo.setDate(date);return foo;})
.collect(Collectors.toList()));
Intellij告诉我将其切换为窥视
.stream().peek(foo -> foo.setDate(date).collect(Collectors.toList()));
但是我读到peek应该只用于调试。我应该避免两种方式吗?
答案 0 :(得分:2)
在这种情况下,第一种方法比OK更为重要,重要的是您不必从结构上更改流的来源,这意味着在流的 中添加/删除元素。
事实上IntelliJ对此是错误的,map
比peek
更适合(仅用于调试)。
答案 1 :(得分:2)
您为什么不使用foreach
?
.forEach(foo -> { foo.setDate(date);})
您甚至不需要stream
收藏。
您还将节省创建新收藏集的成本。