首页 > 解决方案 > 在 Java 8 Stream API 中使用条件修改数组列表

问题描述

你能帮我把下面的内容转换forEach成Stream吗?

这是我的代码:

List<Addon> addonItems = <Some Addon List>

for (Addon addOn : addonItems) {
    if (GeoCode.TRP.toString().equals(addonItems.getSomeCode())) {
        addonItems.setName("Got from GOOGLE");
    }
}

标签: javajava-stream

解决方案


您的示例代码实际上不会编译,但我会尝试回答您的问题...

addonItems.stream().filter(addonItem -> GeoCode.TRP.toString().equals(addonItem.getSomeCode()))
    .forEach(addonItem -> addonItem.setName("Got from GOOGLE"));

这段代码所做的是流式处理 addonItems 列表中的元素,并根据我们的 lambda 过滤器表达式过滤 addonItems。它将在调用 forEach 时执行此流操作,并根据我们的过滤器表达式相应地设置每个 addonItem 的名称。


推荐阅读