需要在合并操作中摆脱三元运算符

问题描述 投票:0回答:1

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

    }
java ternary-operator
1个回答
0
投票

三元运算符只是一个缩短的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");
}
© www.soinside.com 2019 - 2024. All rights reserved.