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 2024

Vídeo: Introdução ao Lambda do Java 8 2024
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

Acalma suas emoções ao praticar Mindfulness - dummies

Acalma suas emoções ao praticar Mindfulness - dummies

Aqui, você descobre a maneira consciente de gerenciar as emoções - as etapas para tome quando estiver sentindo baixo, excessivamente irritado ou desconfortavelmente ansioso. As emoções positivas podem ser um sentimento maravilhoso. A alegria, a alegria, a emoção e a felicidade são perfeitas. Mas como você pode lidar com as chamadas emoções negativas? Use a atenção para a saúde emocional A atenção plena está se tornando ...

Como começar o seu dia de trabalho com meditação Mindfulness - dummies

Como começar o seu dia de trabalho com meditação Mindfulness - dummies

Você pode encontrar a meditação mindfulness é uma ótima maneira de Comece o seu dia de trabalho. Quando chegar ao trabalho pela manhã, talvez já esteja estressado. Depois de uma agitada hora ou duas preparando as crianças para a escola ou regatear com seu parceiro ou lidar com alguma emergência em casa, seguido de ...

Os melhores sites Mindfulness - dummies

Os melhores sites Mindfulness - dummies

, Independentemente de você morar no Reino Unido ou em outro lugar, se você procurar "mindfulness" 'on-line, você literalmente obterá milhões de resultados. Como você pode dizer o trigo da palha? Aqui estão alguns sites que você achará útil. Atento. Este recurso maravilhoso tem muitos conteúdos de alta qualidade de professores excelentes de atenção plena. O ...

Escolha dos editores

HDR Solução de problemas: Nada está funcionando - manequins

HDR Solução de problemas: Nada está funcionando - manequins

Quando você se depara com uma situação com suas fotografias de alcance dinâmico elevado e parece que nada que você está fazendo está funcionando - as configurações não parecem boas, a imagem parece errada, os efeitos são ruins - relaxe e faça uma pausa. A imagem está lhe dizendo algo. Que algo às vezes é relacionado a forçar ...

HDR Resolução de problemas: falta de imaginação - dummies

HDR Resolução de problemas: falta de imaginação - dummies

A imaginação é uma coisa poderosa ao preparar imagens HDR, fato que é tornou-se mais óbvio quando você vê o resultado de não usá-lo versus usá-lo. A imagem superior desta figura é uma imagem HDR de um diner local durante a "hora dourada" - naquele horário atrasado (ou manhã) quando ...

HDR Solução de problemas: Sharpening - dummies

HDR Solução de problemas: Sharpening - dummies

Se você ficar apanhado na perfeição, você está preparado para aumentar seu HDR imagens. Os fotógrafos às vezes estão obcecados com a nitidez em suas fotos. Eles querem que tudo seja pixelly perfeitamente afiado do nariz da câmera até o infinito, independentemente da lente, abertura, ISO ou velocidade do obturador que eles usem. Esta figura mostra os resultados ...

Escolha dos editores

Cisco Rede: Mostrar comando de versão em um Switch - dummies

Cisco Rede: Mostrar comando de versão em um Switch - dummies

Em qualquer componente de rede da Cisco, o show O comando de versão é aplicável a qualquer hardware usando o Sistema Operacional Cisco IET (Internetwork Operating System), incluindo switches. O comando show version mostra informações ligeiramente diferentes, de acordo com o tipo de dispositivo em que você usa. Veja a saída do comando show version em um switch e ...

Cisco Rede: Modo de operação EXEC privilegiado - manequins

Cisco Rede: Modo de operação EXEC privilegiado - manequins

Você precisa usar o modo EXEC privilegiado se quiser realmente tem acesso de atualização a um sistema de rede Cisco,. Para entrar neste modo no modo EXEC do usuário, emita o comando enable, que solicita uma senha, se configurado. Como o nome do modo sugere, este modo tem privilégios extras para permitir ...

Cisco Rede: Configuração de Senha de Shell Seguro (SSH) - manequins

Cisco Rede: Configuração de Senha de Shell Seguro (SSH) - manequins

Shell seguro (SSH) é um protocolo de rede para seus dispositivos Cisco, que é mais seguro do que o Telenet. Definir uma senha segura é um requisito de configuração para este protocolo. Para configurar o acesso a um switch Cisco para SSH, você precisará ter uma conta de usuário criada em sua opção. O exemplo supõe que você tenha ...