Найти сумму квадратов нечётных чисел

22. Найти сумму квадратов нечётных чисел

Условие задачи:
Дан список целых чисел.

Необходимо с помощью Stream API реализовать метод sumSquare(), который возвращает сумму квадратов всех нечётных чисел.

Код:

public static void main(String[] args) {
    List<Integer> numbers = List.of(-1, 10, 2, 5);

    System.out.println(sumSquare(numbers));
}

public static int sumSquare(List<Integer> numbers) {
    // Найти сумму квадратов нечетных чисел

    return 0;
}

Для приведённых данных результат:

26

Спойлеры к решению

Подсказки
💡 Создай поток из списка через stream().
💡 Через filter() оставь только нечётные числа.
💡 Через mapToInt() возведи каждое число в квадрат.
💡 Для получения общей суммы используй sum().

Решение
public static int sumSquare(List<Integer> numbers) {
    return numbers.stream()
            .filter(number -> number % 2 != 0)
            .mapToInt(number -> number * number)
            .sum();
}

Сначала:

.filter(number -> number % 2 != 0)

оставляет нечётные числа:

-1
5

Затем они возводятся в квадрат:

1
25

Итоговая сумма:

26

Временная сложность — O(n), дополнительная память — O(1).