6. Получить удвоенные нечётные числа
Условие задачи:
Дан массив натуральных чисел от 0 до 100.
Необходимо с помощью Stream API:
оставить только нечётные числа;
умножить каждое из них на
2;собрать результат в коллекцию.
Пример:
Вход: [0, 1, 2, 3, 4, 5]
Выход: [2, 6, 10]
Спойлеры к решению
Подсказки
💡 Для создания потока из массива
💡 Нечётные числа можно определить через
💡 Для удвоения каждого числа используй
💡
int[] используй Arrays.stream().💡 Нечётные числа можно определить через
number % 2 != 0.💡 Для удвоения каждого числа используй
map().💡
boxed() преобразует IntStream в поток Integer, который можно собрать в List<Integer>.Решение
int[] numbers = {0, 1, 2, 3, 4, 5};
List<Integer> result = Arrays.stream(numbers)
.filter(number -> number % 2 != 0)
.map(number -> number * 2)
.boxed()
.collect(Collectors.toList());
Сначала:
Arrays.stream(numbers)
создаёт IntStream из исходного массива.
Затем:
.filter(number -> number % 2 != 0)
оставляет только нечётные числа.
После этого:
.map(number -> number * 2)
удваивает каждое из них.
boxed() преобразует значения типа int в Integer, после чего результат собирается в список.
Для массива:
[0, 1, 2, 3, 4, 5]
получим:
[2, 6, 10]
Временная сложность — O(n), дополнительная память — O(k), где k — количество нечётных элементов.