Нужно избавиться от троичного оператора внутри агрегации - PullRequest
0 голосов
/ 05 ноября 2019

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

    }

1 Ответ

2 голосов
/ 05 ноября 2019

Тернарный оператор - это просто сокращенное выражение 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");
}
...