【问题标题】:java 8 streams loopjava 8 流循环
【发布时间】:2018-03-11 20:24:51
【问题描述】:

我对 java 8 很感兴趣,我的循环看起来像这样:

    Product neededProduct = null;


    for (Iterator<Product> iterator = products.iterator(); iterator.hasNext();) {
        Product product = iterator.next();

        if (product.getProductId().equals(id)) {
            neededProduct = product;
            break;
        }
    }

现在我的想法是使用流替换它,

products.stream().filter(s -> s.getProductId().equals(id)).forEach(product -> {
            neededProduct = product;
            break;
        });

但是 requiredProduct 必须是 final 才能用于 lambda 表达式,break 也不能用于 lambda,有什么想法可以解决这个问题吗?

【问题讨论】:

    标签: loops for-loop java-8 java-stream


    【解决方案1】:

    您可以通过 find* 操作之一直接使用流分配neededProduct

    Product neededProduct = products.stream()
        .filter(s -> s.getProductId().equals(id))
        .findFirst()
        .orElse(null);
    

    【讨论】:

      猜你喜欢
      • 2018-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-25
      • 2014-07-22
      • 2018-08-11
      相关资源
      最近更新 更多