Sobes.tech
Middle

O que faz o método collect em Java?

sobes.tech IA

Resposta da IA

O método collect na API de Streams do Java realiza uma redução mutável (mutable reduction) dos elementos do fluxo em um único objeto resultante. Ele aceita um Collector como argumento e permite agregar dados de várias maneiras, por exemplo, coletando elementos em coleções, agrupando-os ou aplicando funções de agregação (soma, média, etc.).

Componentes principais do Collector:

  • supplier(): Cria um novo contêiner resultante vazio.
  • accumulator(): Adiciona o elemento atual do fluxo ao contêiner resultante.
  • combiner(): Combina dois contêineres resultantes (usado em fluxos paralelos).
  • finisher(): Aplica uma transformação final ao contêiner resultante (opcional).

Implementações populares de Collector são fornecidas pela classe Collectors:

  • toList(), toSet(), toMap(): Coleta elementos em List, Set, Map, respectivamente.
  • joining(): Combina elementos de string.
  • groupingBy(): Agrupa elementos por um critério dado.
  • counting(), summingInt(), averagingDouble(): Contagem, soma, média.

Exemplo de uso para coletar em uma lista:

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class CollectExample {

    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie");

        List<String> collectedNames = names.stream()
                                          .collect(Collectors.toList()); // Coleta em List

        System.out.println(collectedNames);
    }
}