SonarQube说,我需要将三元运算符的这种用法转换为“ if” /“ else”结构。我该怎么办?
public static String transform(final List<String> list) {
return list.stream().filter(p -> p.matches(".*\\d.*"))
.reduce((a,
b) -> (Integer.parseInt(a.replaceAll("\\D+", "")) > Integer
.parseInt(b.replaceAll("\\D+", "")) ? a : b))
.orElse("there are no numbers");
}
三元运算符只是一个缩短的if/else
循环,您的等效于:
public static String transform(final List<String> list) {
return list.stream()
.filter(p -> p.matches(".*\\d.*"))
.reduce((a,b) -> {
if (Integer.parseInt(a.replaceAll("\\D+", "")) > Integer.parseInt(b.replaceAll("\\D+", ""))) {
return a;
} else {
return b;
}
})
.orElse("there are no numbers");
}