【问题标题】:Enhanced for loop to stream增强的 for 循环流式传输
【发布时间】:2020-10-03 23:28:07
【问题描述】:

我一直在尝试使用 Stream 而不是增强的 for 循环,但我无法正确合并 if 语句。任何帮助将不胜感激

List<Donut> newDonuts = new ArrayList<>();
for (Donut currentElement : availableDonuts) {
    if (!alreadyPickedDonuts.contains(currentElement)) {
        newDonuts.add(currentElement);
        if (newDonuts.size() == extraDonutsRequired) {
            break;
        }
    }
}

【问题讨论】:

    标签: java java-8 functional-programming java-stream


    【解决方案1】:

    你可以这样做:

    availableDonuts.stream()
                .filter(currentElement -> !alreadyPickedDonuts.contains(currentElement))
                .limit(extraDonutsRequired)
                .collect(Collectors.toList());
    

    【讨论】:

    • 这个版本更安全,因为它可以正确处理extraDonutsRequired == 0的情况
    • 是的。虽然在我的原始代码中,这是一个方法的一部分,如果 extraDonutsRequired == 0 则永远不会调用它。
    猜你喜欢
    • 1970-01-01
    • 2014-02-23
    • 2013-05-06
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    相关资源
    最近更新 更多