通过这个Java流的备忘单 - 我理解Java流不能改变数据。
例如,在下面使用的代码中,我是否正确地说 - 使用forEach终端操作数据正在变异?
List<Foo> fooList=new ArrayList<>();
fooList.stream()
.filter(foo-> return foo.getSomeBoolean())
.forEach(foo->{
foo.setSomeBoolean(false);
});
我很困惑,forEach终端操作可能会对数据产生副作用但不会改变数据?
有人可以解释一下foreach如何在这里改变数据吗?
答案 0 :(得分:1)
你不能改变fooList,但可以使用终端操作对元素执行副作用。正如备忘单所说,流是管道线,而不是数据结构。你不能改变不是数据结构的东西,但你可以操纵流经管道的各个元素。