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