unk*_*cba -1 java character java-stream
示例: 输入:abc565xyz 输出:16 哪种变体更好?谢谢。
public static int sumOfDigits(String s) {
return s.chars().filter(Character::isDigit).reduce(0, (i0, i1) -> i0 + Character.digit(i1, 10));
}
public static int sumOfDigits(String s) {
return s.chars().filter(Character::isDigit).mapToObj(a -> a - '0').reduce(0, (a, b) -> a + b);
}
public static int sumOfDigits(String s) {
return s.chars().filter(Character::isDigit).mapToObj(a -> Character.digit(a, 10)).reduce(0, Integer::sum);
}
Run Code Online (Sandbox Code Playgroud)
更好地定义。Java 什么版本?哪个版本?您打算在哪个平台上运行它?简而言之,如果没有在目标平台上进行测试,就很难说。
顺便说一句,而不是mapToObj显式的reduce,最好这样做
return s.chars().filter(Character::isDigit).map(a -> Character.digit(a, 10)).sum();
Run Code Online (Sandbox Code Playgroud)
将 an 映射int到 anObject可能是最昂贵的部分,您在两个版本中都这样做了。因此,正如发布的那样,第一个可能是“最好的”。
| 归档时间: |
|
| 查看次数: |
495 次 |
| 最近记录: |