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

假设我有一个详细模型如下:


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 视频,演示者特别提到在流之外改变对象是一个坏主意,但我已经多次看到上述代码。我的理解有误吗?


一只名叫tom的猫
浏览 111回答 1
1回答

绝地无双

首先details.forEach是没有从所谓的stream,而是直接从List-这些都是不同的事情。而且,当然,你不是在流之外变异,而是在流detail本身。然后,您正在改变对象的内部属性,而不是其List本身(remove或add例如)-这称为非结构性更改,这样做完全可以。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java