Java Streams—元素的更改字段

Java Streams—元素的更改字段,java,arrays,list,java-8,java-stream,Java,Arrays,List,Java 8,Java Stream,我已经在谷歌上搜索了一段时间,但是我找不到我想要的答案 我有一个产品流,其中每一个都包含以下字段: private String ID; private float price; private int quantity; 我需要更改特定产品的quantity字段,而不消耗流的其余部分。可能吗 如何搜索此元素(按产品ID),然后更改“数量”字段的值 我想我可以使用.peek(),但我不知道如何实现这一点。假设您有一个数量设置器方法,您可以使用peek来更改值。测试所需的产品ID,然后调用set

我已经在谷歌上搜索了一段时间,但是我找不到我想要的答案

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

private String ID;
private float price;
private int quantity;
我需要更改特定产品的quantity字段,而不消耗流的其余部分。可能吗

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


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

假设您有一个数量设置器方法,您可以使用
peek
来更改值。测试所需的产品ID,然后调用setter,所有这些都使用lambda表达式(a
Consumer


假设您对数量有一个setter方法,您可以使用
peek
来更改该值。测试所需的产品ID,然后调用setter,所有这些都使用lambda表达式(a
Consumer


修改peek元素是否安全?peek元素不应该是只读和线程安全的吗?修改peek元素安全吗?peek元素不是假定为只读和线程安全的吗?
stream.peek( p -> {
    if ("YourID".equals(p.getID()))
    {
         p.setQuantity(newQuantity);
    }
});