Processamento multithread de fluxos de dados com agrupamento e filtragem

Java Hard streams

Tarefa «Processamento multithread de fluxos de dados com agrupamento e filtragem»

Escreva um programa que lê da entrada padrão linhas contendo números inteiros separados por espaços. Cada linha representa um fluxo de dados separado. É necessário processar todos os fluxos usando Java Streams, combiná-los em um único fluxo, filtrar os números positivos, elevá-los ao quadrado, agrupá-los pelo resto da divisão por 5 e, para cada grupo, calcular a média aritmética. Exiba o resultado em ordem crescente do resto. Se para algum resto não houver números, exiba 0. É garantido que os dados de entrada contêm no máximo 1000 números.

Formato de Entrada

Várias linhas, cada linha contém números inteiros separados por espaços. O fim da entrada é uma linha vazia.

Formato de Saída

5 linhas, cada uma contendo um número de ponto flutuante (média aritmética) para o respectivo resto de 0 a 4. A saída deve ser formatada com duas casas decimais.

Exemplos

Exemplo 1

ENTRADA
3 1 2
SAÍDA
1,2,3

Exemplo 2

ENTRADA
1 2 3 4 5 6 7 8 9 10
SAÍDA
5.00 6.00 7.00 8.00 9.00

Exemplo 3

ENTRADA
5 5 5
SAÍDA
5,5,5

Exemplo 4

ENTRADA
-1 -3 0 2
SAÍDA
-3,-1,0,2
main.java