【问题标题】:Java Streams - Change field of an elementJava Streams - 更改元素的字段
【发布时间】:2015-06-29 23:23:02
【问题描述】:

我已经在谷歌上搜索了一段时间,但找不到我正在寻找的答案。

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

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

我需要更改特定产品的 quantity 字段而不消耗流的其余部分。是否可以?

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

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

【问题讨论】:

    标签: java arrays list java-8 java-stream


    【解决方案1】:

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

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

    【讨论】:

    • 修改 peek 元素是否安全? peek 元素难道不是只读且线程安全的吗?
    猜你喜欢
    • 2020-03-26
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-24
    • 2023-03-29
    • 2021-09-24
    相关资源
    最近更新 更多