Lar Finanças Pessoais Usando Streams e Lambda Expressions em Java - dummies

Usando Streams e Lambda Expressions em Java - dummies

Vídeo: Introdução ao Lambda do Java 8 2025

Vídeo: Introdução ao Lambda do Java 8 2025
Anonim

O Java possui métodos extravagantes que fazem o melhor uso de fluxos e expressões lambda. Com fluxos e expressões lambda, você pode criar uma linha de montagem. A solução de linha de montagem usa conceitos de programação funcional.

A linha de montagem consiste em vários métodos. Cada método leva os dados, transforma os dados de uma forma ou outra e entrega seus resultados para o próximo método na linha. Aqui está uma linha de montagem.

Uma linha de montagem de programação funcional.

Cada caixa representa um monte de matérias-primas à medida que elas são transformadas ao longo de uma linha de montagem. Cada seta representa um método (ou, metaforicamente, um trabalhador na linha de montagem).

Por exemplo, na transição da segunda caixa para a terceira caixa, um método de trabalhador (o método filtro ) destaca vendas de itens que não são DVDs. Imagine Lucy Ricardo de pé entre a segunda e a terceira caixas, removendo cada livro ou CD da linha de montagem e jogando-o descuidadamente no chão.

O parâmetro para o método filtro de Java é um Predicado - uma expressão lambda cujo resultado é booleano . O método filtro destaca itens que não passam o teste verdadeiro / falso da expressão lambda.

Alguns Métodos de Programação Funcional
Nome do Método Membro de Parâmetro (s) Tipo de Resultado Valor de Resultado
fluxo Coleção (por exemplo, ArrayList , objeto) (nenhum) Stream Um fluxo que escuta elementos da coleção
filtro Stream Predicate Stream > Um novo fluxo contendo valores para os quais a expressão lambda retorna verdadeiro mapa
Stream Função Stream Um novo fluxo contendo os resultados da aplicação da expressão lambda ao fluxo recebido reduzir
Stream BinaryOperator O tipo usado pelo BinaryOperator O resultado da combinação de todos os valores no fluxo de entrada
Na transição da terceira caixa para a quarta caixa, um método de trabalhador (o método

mapa ) puxa o preço de cada venda . A partir do local desse trabalhador, a linha de montagem contém apenas valores preço . Para ser mais preciso, o método

< do Java usa uma Função como (venda) -> venda. getPrice ()

e aplica a

Function a cada valor em um fluxo. Portanto, o mapa método leva uma entrada de venda objetos e cria um fluxo de saída preço valores. Na transição da quarta caixa para a quinta caixa, um método de trabalhador (o método

reduzir ) adiciona os preços das vendas de DVD.O método reduzir de Java leva dois parâmetros: O primeiro parâmetro é um valor inicial.

Na imagem acima, o valor inicial é

0. 0 . O segundo parâmetro é um

BinaryOperator . Na imagem acima, reduzir método BinaryOperator é (price1, price2) -> price1 + price2

O método

reduzir usa o BinaryOperator para combinar os valores do fluxo recebido. O valor inicial serve como ponto de partida para toda a combinação. Assim, o método reduzir faz duas adições. O método de redução adiciona dois valores de um fluxo recebido.

Para comparação, imagine chamar o método

reduzir (10. 0, (value1, value2) -> value1 * value2)

com o fluxo cujos valores incluem

3. 0 , 2. 0 e 5. 0 . A ação resultante é mostrada abaixo O método de redução multiplica os valores de um fluxo recebido.

Você pode ter ouvido falar do modelo de programação MapReduce do Google. A semelhança entre o nome do modelo de programação e os nomes dos métodos Java mapa e reduzir não é uma coincidência. Tomados como um todo, toda a montagem alinha os preços dos DVDs vendidos. O código acima contém um programa completo usando os fluxos e expressões lambda a primeira imagem acima.

importar java. texto. Formato numérico;

importar java. util. ArrayList;

classe pública TallySales {

public static void main (String [] args) {

ArrayList

vendas = nova ArrayList <> (); NumberFormat currency = NumberFormat. getCurrencyInstance ();

fillTheList (vendas);

total duplo = vendas. stream ()

. filtro ((venda) -> venda. getItem (). igual ("DVD"))

. mapa ((venda) -> venda. getPrice ())

. reduzir (0. 0, (preço1, preço2) -> preço1 + preço2);

Sistema. Fora. println (formato de moeda (total));

}

static void fillTheList (ArrayList

vendas) { vendas. adicionar (venda nova ("DVD", 15. 00));

vendas. adicionar (venda nova ("Livro", 12. 00));

vendas. adicionar (venda nova ("DVD", 21. 00));

vendas. adicionar (venda nova ("CD", 5. 25));

}

}

O código requer Java 8 ou posterior. Se o seu IDE estiver configurado para uma versão Java anterior, você pode ter que mexer com as configurações do IDE. Você pode até ter que baixar uma versão mais recente do Java.

O negrito é uma grande declaração de atribuição de Java. O lado direito da declaração contém uma seqüência de chamadas de método. Cada chamada de método retorna um objeto e cada um desses objetos é a coisa antes do ponto na próxima chamada de método. É assim que você forma a linha de montagem.

Por exemplo, perto do início do código em negrito, o nome

vendas refere-se a um objeto ArrayList . Cada objeto ArrayList possui um método fluxo . No código acima, vendas. stream () é uma chamada para esse método ArrayList objeto fluxo . O método de fluxo retorna uma instância da classe

Stream de Java. (Que surpresa!) Então vendas. stream () refere-se a um objeto Stream . Obtendo todas as vendas de DVD.

Todo objeto

Stream possui um método filtro . Então vendas. corrente(). filter⁣ ((venda) -> venda. getItem (). equal ("DVD"))

é uma chamada para o método

⁣Stream objeto filtro . O padrão continua. O método

Stream objeto mapa retorna ainda outro objeto Stream - um Stream contendo preços. Obtendo o preço de cada venda de DVD.

Para Stream dos preços, você aplica o método reduzir , que produz um valor duplo - o total dos preços do DVD. Obtendo o preço total de todas as vendas de DVD.

Usando Streams e Lambda Expressions em Java - dummies

Escolha dos editores

Como executar o teste beta para uma aplicação iOS - manequins

Como executar o teste beta para uma aplicação iOS - manequins

Depois de executar o seu aplicativo em alguns dispositivos e está confiante de que está funcionando da maneira que é suposto, considere levá-lo às mãos de alguns testadores beta. O teste beta permite que você receba comentários de usuários reais e repare todos os erros antes que o público em geral os veja. Você pode se surpreender ...

Como publicar no Amazon Appstore para Android - dummies

Como publicar no Amazon Appstore para Android - dummies

Publicação para o Amazon Appstore para Android é semelhante à publicação na Google Play Store: você cria uma conta e, em seguida, talvez seja necessário pagar uma taxa de desenvolvedor. Ao contrário do Google Play Store, os aplicativos devem ser revistos no Amazon Appstore para Android, portanto, planeje alguns dias entre o dia em que você enviar ...

Como preparar ativos gráficos em seu aplicativo Android para publicar na Play Store - Dummies

Como preparar ativos gráficos em seu aplicativo Android para publicar na Play Store - Dummies

Quando você publica um aplicativo Android na Play Store, você interage com o Console do desenvolvedor do Google Play. O passo essencial nesta interação é o passo em que você carrega o arquivo APK do seu aplicativo. É o passo essencial, mas não é o único passo. Você também deve usar a Consola do desenvolvedor da Play Store ...

Escolha dos editores

As Leis de Minecraft Redstone - dummies

As Leis de Minecraft Redstone - dummies

Cada mecanismo Redstone da Minecraft possui um conjunto diferente de propriedades que determinam como ele atua. Você deve entender as relações entre suas propriedades. Depois de trabalhar com Redstone por um tempo, a forma e a função das suas ferramentas podem se tornar bastante intuitivas. Até então, você pode usar essas informações para descobrir quais opções são ...

Minecraft Pocket Edition Guia de Sobrevivência - dummies

Minecraft Pocket Edition Guia de Sobrevivência - dummies

Ao contrário da versão bastante complicada para PC do Minecraft, Pocket Edition (PE) de A Minecraft tem uma série de etapas mais direta para alcançar seu ponto final, o Nether Spire. Para sobreviver ao PE Minecraft, um jogador precisa seguir a série de passos descritos abaixo. Punch madeira e construir um abrigo. Todo o Minecraft ...

Minecraft Para Dummies Cheat Sheet - dummies

Minecraft Para Dummies Cheat Sheet - dummies

Minecraft requer um jogador para reunir recursos para sobreviver, construir, criar, e avance no jogo. Devido aos diferentes ambientes encontrados no Minecraft, um jogador precisa usar diferentes estratégias para reunir recursos eficientemente nas três principais áreas do jogo - Overland, the Mines e the Nether. Uma vez que estes ...

Escolha dos editores

Como criar mensagens de e-mail de impressão em série no Word 2013 - dummies

Como criar mensagens de e-mail de impressão em série no Word 2013 - dummies

Palavra 2013 permite que você expire mensagens de e-mail personalizadas usando a opção E-Mail para mala direta. Esta opção funciona apenas quando você configura o programa Microsoft Outlook no seu computador. Depois disso, você inicia o documento principal para sua fusão de e-mail obedecendo a estas etapas:

Como criar múltiplas colunas em um documento do Word 2007 - dummies

Como criar múltiplas colunas em um documento do Word 2007 - dummies

Para converter seu padrão single- (ou não-) coluna do documento do Word 2007 em um com várias colunas, basta escolher o formato da coluna que deseja no menu Colunas. Instantaneamente, seu documento é transformado em uma maravilha multicolora!

Como criar tabelas rápidas nas tabelas do Word 2008 para Mac - dummies

Como criar tabelas rápidas nas tabelas do Word 2008 para Mac - dummies

Ajudam você a organizar idéias ou dados que seriam aborrecedores e difíceis de compreender em forma de parágrafo regular. Com o Word 2008 para Mac, você pode facilmente criar tabelas - às vezes chamadas de grades - em qualquer lugar em seus documentos. A maneira mais fácil de criar tabelas é com um dos melhores recursos novos ...