将 for 循环重构为流

Kar*_*ski -1 java java-stream

如何将此for循环更改为流?

public int calculateForSpliterator(String[] matchTab, String spliterator, RulesChecker rulesChecker) {
    int finalScore = 0;
    for (String element : matchTab) {
        String[] splitScroes = element.split(spliterator);
        int ourPoints = Integer.parseInt(splitScroes[0]);
        int theirPoints = Integer.parseInt(splitScroes[1]);
        finalScore += rulesChecker.checkRules(ourPoints, theirPoints);
    }
    return finalScore;
}
Run Code Online (Sandbox Code Playgroud)

Jac*_* G. 7

假设RulesChecker#checkRules返回一个int,那么您可以使用:

public int calculateForSpliterator(String[] matchTab, String spliterator, RulesChecker rulesChecker) {
    return Arrays.stream(matchTab)
        .map(element -> element.split(spliterator))
        .mapToInt(splitScores -> rulesChecker.checkRules(Integer.parseInt(splitScores[0]),
            Integer.parseInt(splitScores[1])))
        .sum();
}
Run Code Online (Sandbox Code Playgroud)

请注意,这并不比您当前的解决方案更具可读性,因此如果我是您,我可能会保留 for 循环。