java - 将增强循环转换为 Java 8 Streams,过滤器 - forEach

标签 java java-8 java-stream

我正在尝试学习 Java 8。有没有办法将下面的方法转换为 Java 8 Streams、filterforEach。如果是,怎么办?

protected void isValidId(CarModel model, List<String> errors) throws DataAccessException {

    CarStyle[] styles = model.getStyles();

    for(CarStyle style : styles){
        if(!style.isModels()){
            if(style.getStyleId() > 99){
          errors.add(INVALID_ID + ", Id:" + style.getStyleId());

            }
        }
    }
}

我阅读了一些关于 Java 8 的教程,但不确定如何实现它。谢谢。

编辑:我在方法中添加了一个列表。

最佳答案

您的嵌套 if 语句等于 filter。稍后,您可以将过滤后的元素转换为错误字符串并将它们收集到现有集合中:

Arrays.stream(model.getStyles())
  .filter(s -> !s.isModels() && s.getStyleId() > 99)
  .map(s -> String.format("%s, Id:%d", INVALID_ID, s.getStyleId()))
  .forEach(errors::add);

或者...更合理的选择是返回错误列表而不是 void:

return Arrays.stream(model.getStyles())
  .filter(s -> !s.isModels() && s.getStyleId() > 99)
  .map(s -> String.format("%s, Id:%d", INVALID_ID, s.getStyleId()))
  .collect(Collectors.toList());

关于java - 将增强循环转换为 Java 8 Streams,过滤器 - forEach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45550129/

相关文章:

java - 有序流的状态过滤器

java - 我的位置应用程序未访问 getLastKnownLocation

java - 如何从依赖中获取子依赖或版本?

java - Spring : Difference between @ControllerAdvice and Spring AOP

Java流将数组收集到一个列表中

java - Stream.forEach 期间出现空指针异常

java - 尝试从类中导入嵌套类型

java - 为什么组合器不在 stream.reduce 中调用,尽管结果是正确的

java - 如何让使用 Unsafe 的 java 8 代码在 jdk 8 和 jdk 9 上工作?

Java 8 流 : difference between limit() and skip()