Java Streams - 更改元素的字段

Java Streams - Change field of an element

我用谷歌搜索了一段时间,但找不到我要找的答案。

我有一个 产品流 ,每个产品都包含以下字段:

private String ID;
private float price;
private int quantity;

我需要更改特定产品的 数量 字段而不消耗流的其余部分。可能吗?

如何搜索此元素(按产品 ID)然后更改 数量 字段的值?

我想我可以使用 .peek(),但我不知道如何实现。

假设您有 setter 数量方法,您可以使用 peek 来更改值。测试您想要的产品 ID,然后调用 setter,全部在 lambda 表达式中(Consumer)。

stream.peek( p -> {
    if ("YourID".equals(p.getID()))
    {
         p.setQuantity(newQuantity);
    }
});