"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Qual é a principal diferença entre Stream.map() e Stream.flatMap() em Java 8?

Qual é a principal diferença entre Stream.map() e Stream.flatMap() em Java 8?

Publicado em 15/11/2024
Navegar:853

What\'s the Key Difference Between Stream.map() and Stream.flatMap() in Java 8?

Stream.map() vs. Stream.flatMap() em Java 8

Stream.map() e Stream.flatMap() são dois métodos comumente usados ​​em Java 8 que executam transformações semelhantes em um fluxo de valores. No entanto, eles têm uma diferença fundamental na forma como processam e retornam valores.

Stream.map()

  • Aceita uma função super-T, ? estende R> como um argumento, onde T é o tipo de entrada e R é o tipo de saída.
  • Aplica a função fornecida a cada elemento no fluxo de entrada.
  • Produz um novo fluxo contendo o valores transformados, cada um correspondendo a um valor de entrada.
  • Por exemplo, dado um fluxo de inteiros, map pode ser usado para transformar cada inteiro em seu square.

Stream.flatMap()

  • Aceita uma função super-T, ? estende Fluxo estende R>> como um argumento, que retorna um fluxo para cada valor de entrada.
  • Invoca a função em cada elemento no fluxo de entrada.
  • Os fluxos resultantes são concatenados em um único fluxo, criando uma saída "achatada".
  • Por exemplo, dado um fluxo de strings, flatMap pode ser usado para extrair todos os caracteres individuais em um único fluxo de caracteres.

Principal diferença

A principal diferença entre map() e flatMap() está em como eles lidam com os resultados da função de transformação:

  • map() produz um valor transformado para cada entrada value.
  • flatMap() produz zero ou mais valores transformados para cada valor de entrada.

Essa distinção afeta a forma e o conteúdo do fluxo resultante. flatMap() permite a criação de fluxos aninhados, enquanto map() mantém a mesma dimensionalidade do fluxo original.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3