说我有一个详细模型如下:
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视频,主持人特别提到在流之外的变异对象是一个坏主意,但我已经看过很多次上面的代码了.我的理解错了吗?
首先,details.forEach是不是从所谓的stream,而是直接从List-这些都是不同的事情.而且,当然,你不是在流外变异,而是在变异detail.
然后,你是变异的对象的内部性质,不是在List本身(remove或add例如) -这就是所谓的非结构性变化,它比还行做到这一点.