提问者:小点点

将for循环重构为流[已关闭]


如何将for循环改为stream?

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;
}

共1个答案

匿名用户

假设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();
}

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