Многопоточная обработка потоков данных с группировкой и фильтрацией

Java Сложный streams

Задача «Многопоточная обработка потоков данных с группировкой и фильтрацией»

Напишите программу, которая читает из стандартного ввода строки, содержащие целые числа, разделённые пробелами. Каждая строка представляет собой отдельный поток данных. Необходимо обработать все потоки с использованием Java Streams, объединить их в один поток, отфильтровать положительные числа, возвести их в квадрат, сгруппировать по остатку от деления на 5 и для каждой группы вычислить среднее арифметическое. Вывести результат в порядке возрастания остатка. Если для какого-то остатка нет чисел, вывести 0. Гарантируется, что входные данные содержат не более 1000 чисел.

Формат ввода

Несколько строк, каждая строка содержит целые числа, разделённые пробелами. Конец ввода — пустая строка.

Формат вывода

5 строк, каждая содержит одно число с плавающей точкой (среднее арифметическое) для соответствующего остатка от 0 до 4. Вывод должен быть отформатирован с двумя знаками после запятой.

Примеры

Пример 1

ВВОД
3 1 2
ВЫВОД
1,2,3

Пример 2

ВВОД
1 2 3 4 5 6 7 8 9 10
ВЫВОД
5.00 6.00 7.00 8.00 9.00

Пример 3

ВВОД
5 5 5
ВЫВОД
5,5,5

Пример 4

ВВОД
-1 -3 0 2
ВЫВОД
-3,-1,0,2
main.java