我可以在单行foreach循环上执行两个方法吗?

时间:2016-02-04 17:31:57

标签: java methods foreach

我认为标题是自我解释的。我需要在foreach循环方法中执行两个不同的方法。例如,我目前有 Files.walk(pathToHeaven).filter(Files::isRegularFile).forEach((path) -> doSomething(var1, path));

我可以修改此行以在doSomething()之后执行第二种方法吗?

2 个答案:

答案 0 :(得分:4)

当然,只需添加大括号:

Files.walk(pathToHeaven).filter(Files::isRegularFile).forEach((path) -> { 
        doSomething(var1, path); 
        System.out.println("Hi there");
    }
);

以上内容符合Lambda Expressions

的语法
  

lambda表达式的语法如下。

     

(形式参数列表) - > {表达式或语句}

答案 1 :(得分:2)

是的,可能。

只需将您的陈述括在大括号中,如下:

Files
    .walk(pathToHeaven)
    .filter(Files::isRegularFile)
    .forEach(
        (path) -> {
            doSomething(var1, path);
            doSomethingElse(var2, path);
        }
);