Java流中的continue关键字的等价物?

时间:2016-06-06 13:10:41

标签: java java-8 java-stream

  for (final Prices ppr : prices) {
    if (!currency.getCode().equals(ppr.getCurrency().getCode())) {
      continue;
    }
    return ppr.getPrice();
  }

上面的代码可以转换成Java流代码吗?我收到了continue关键字错误...

2 个答案:

答案 0 :(得分:9)

return prices.stream()
     .filter(ppr -> currency.getCode().equals(ppr.getCurrent().getCode()))
     .findFirst()
     .orElseThrow(NoSuchElementException::new);

答案 1 :(得分:0)

只需扩展您提供的答案,您也可以

return prices.stream()
     .filter(ppr -> currency.getCode().equals(ppr.getCurrent().getCode()))
     .findFirst()
     .orElse(/* provide some default Price in case nothing is returned */);

而不是.findFirst()。get()返回不应为空的值。所以它假设会返回一些数据。使用orElse语句,您可以提供默认值,以防返回任何内容。