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

Bor*_*ris 4 java java-stream

说我有一个详细模型如下:

public class Detail {
    public Integer lineId;
    public Integer quantity;
    public BigDecimal length;
    public Integer sequenceNumber;
}
Run Code Online (Sandbox Code Playgroud)

我已经从中创建了一个列表.

List<Detail> details = details();
Run Code Online (Sandbox Code Playgroud)

现在我想通过一种方法更新序列号:

public void updateSequenceNumbers(List<Detail> details) {
    details.forEach(detail -> detail.sequenceNumber = getNumberFromElsewhere());
}
Run Code Online (Sandbox Code Playgroud)

除非上面可能出现的任何语法错误,否则应该从我的理解中解决.我的问题是我应该这样做吗?我正在观看这个youtube视频,主持人特别提到在流之外的变异对象是一个坏主意,但我已经看过很多次上面的代码了.我的理解错了吗?

Eug*_*ene 6

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

然后,你是变异的对象的内部性质,不是List本身(removeadd例如) -这就是所谓的非结构性变化,它比还行做到这一点.