如何将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;
}
假设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循环。