Java 需要去掉聚合操作中的三元运算符

Java 需要去掉聚合操作中的三元运算符,java,ternary-operator,Java,Ternary Operator,SonarQube告诉我需要将三元运算符的用法转换为“if”/“else”结构。 我该怎么做 public static String transform(final List<String> list) { return list.stream().filter(p -> p.matches(".*\\d.*")) .reduce((a, b) -> (Integer.pa

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");

    }
公共静态字符串转换(最终列表){
return list.stream().filter(p->p.matches(.*\\d.*))
.减少((a,
b) ->(Integer.parseInt(a.replaceAll(“\\D+”,“”))>Integer
.parseInt(b.replaceAll(“\\D+”,“)?a:b))
.orElse(“没有数字”);
}

三元运算符只是一个缩短的
if/else
表达式,您的代码相当于:

公共静态字符串转换(最终列表){
return list.stream()
.filter(p->p.matches(.*\\d.*))
.减少((a,b)->{
if(Integer.parseInt(a.replaceAll(“\\D+”,”)>Integer.parseInt(b.replaceAll(“\\D+”,”)){
返回a;
}否则{
返回b;
}
})
.orElse(“没有数字”);
}

三元运算符只是一个缩短的
if/else
表达式,您的代码相当于:

公共静态字符串转换(最终列表){
return list.stream()
.filter(p->p.matches(.*\\d.*))
.减少((a,b)->{
if(Integer.parseInt(a.replaceAll(“\\D+”,”)>Integer.parseInt(b.replaceAll(“\\D+”,”)){
返回a;
}否则{
返回b;
}
})
.orElse(“没有数字”);
}