为了账号安全,请及时绑定邮箱和手机立即绑定

我应该改变流中的对象吗?

我应该改变流中的对象吗?

一只名叫tom的猫 2021-10-28 14:08:00
假设我有一个详细模型如下:public class Detail {    public Integer lineId;    public Integer quantity;    public BigDecimal length;    public Integer sequenceNumber;}我已经从中创建了一个列表。List<Detail> details = details();现在我想通过一种方法更新序列号:public void updateSequenceNumbers(List<Detail> details) {    details.forEach(detail -> detail.sequenceNumber = getNumberFromElsewhere());}除非上面可能出现的任何语法错误,否则根据我的理解应该可以工作。我的问题是我应该这样做吗?我正在观看这个 youtube 视频,演示者特别提到在流之外改变对象是一个坏主意,但我已经多次看到上述代码。我的理解有误吗?
查看完整描述

1 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

首先details.forEach没有从所谓的stream,而是直接从List-这些都是不同的事情。而且,当然,你不是在流之外变异,而是在流detail本身。

然后,您正在改变对象的内部属性,而不是List本身(removeadd例如)-这称为非结构性更改,这样做完全可以。


查看完整回答
反对 回复 2021-10-28
  • 1 回答
  • 0 关注
  • 105 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信