首页 > 解决方案 > 将 for 循环转换为流

问题描述

我有以下 for 循环,我需要使用集合流以保持与其他代码的一致性。

for (int i = 0; i < res.getAllLists().size(); i++) {
    if (dataRes.getData().getId().equalsIgnoreCase(
            String.valueOf(res.getAllLists().get(i).getId()))) {
        res.getAllLists().remove(i);
    }
}

标签: javalambdajava-8java-stream

解决方案


要有条件地从集合中删除元素,请使用该removeIf(Predicate<? super E> filter)方法。

请注意,这不使用问题中要求的流处理,而是使用 Lambda 表达式,因此它是较新的 Java 8“功能”语法。

res.getAllLists().removeIf(list -> dataRes.getData().getId().equalsIgnoreCase(
                                       String.valueOf(list.getId())));

推荐阅读