Exemplos de utilização de lambdas expressions

Este post tem por objetivo mostrar alguns exemplos práticos de utilização de lambdas expressions do Java 8

Wolmir Cezer Garbin por Wolmir Cezer Garbin - - Java - TUTORIAL

Última atualização em: | 7511 Visualizações

Exemplos de utilização de lambdas expressions

O java 8, após um bom tempo sem muitas mudanças trouxe várias novidades para os programadores, veja neste post alguns exemplos de códigos que demonstram alguns recursos do lambdas do Java 8.

Utilizando .filter e .map

Este exemplo como através da utilização da classe Stream e lambdas expressions ficou simples para fazer operaççoes de filtro e mapeamento de valores.

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

public class Exercicio01 {

    public static void main(String args[]){
        List<String> languages = Arrays.asList("Java", "Scala", "C++", "Haskell", "Lisp");

        // filtrar todos os nomes que iniciam com J
        languages.stream().filter(l -> l.toUpperCase().startsWith("J")).forEach(System.out::print);

        // filtrar todos os nomes que possuem mais de 5 caracteres
        languages.stream().filter(l -> l.length() > 5).forEach(System.out::print);

        // Transformar esta lista em uma lista de inteiros contendo o tamanho de cada palavra e imprimir
        List<Integer> collect = languages.stream().map(l -> l.length()).collect(Collectors.toList());

        collect.forEach(System.out::print);
    }
}

Exemplo de conversão de for tradicional para forEach do java 8

Estes exemplos mostram como é possível reescrever códigos de maneira muito mais simples com a utilização de lambdas expressions.

import java.util.Arrays;
import java.util.List;

public class Exercicio02 {

    public static void main(String[] args) {
        List<Integer> costBeforeTax = Arrays.asList(100, 200, 300, 400, 500);

        /*for (Integer cost : costBeforeTax) {
            double price = cost + .12*cost;
            System.out.println(price);
        }*/

        // reescrever usando lambdas
        costBeforeTax.forEach(cost -> System.out.println( cost + .12*cost ));
    }
}

Utilizando forEach com objetos.

import java.util.Arrays;
import java.util.List;

public class Exercicio03 {

    public static void main(String[] args) {
        List<Pessoa> costBeforeTax = Arrays.asList(new Pessoa("João", 2531.0), new Pessoa("José", 1600.0), new Pessoa("Nicolas", 2810.0));

        /*for (Pessoa p : costBeforeTax) {
            double inss = p.salario * 5 / 100;
            System.out.println( inss );
        }*/

        // reescrever usando lambdas
        costBeforeTax.forEach( p -> System.out.println( p.salario * 5 / 100 ) );
    }
}

class Pessoa {
    String nome;
    Double salario;

    public Pessoa(String nome, Double salario) {
        this.nome = nome;
        this.salario = salario;
    }
}

Filtro com a utilização da classe stream

Este exemplo mostra de maneira simples como filtrar listas com a utilização da classe Stream.

import java.util.Arrays;
import java.util.List;

public class Exercicio04 {

    public static void main(String[] args) {
        List<Usuario> usuarios = Arrays.asList(
                new Usuario("maikon", false),
                new Usuario("jose", false),
                new Usuario("paulo", true),
                new Usuario("ronaldo", true));

        // Criar uma nova lista de usuários ativos e imprimir usando java 8 e forEach
        usuarios.stream()
                .filter(usuario -> usuario.ativo)
                .forEach( u -> System.out.println(u.usuario) );
    }
}

class Usuario {
    String usuario;
    Boolean ativo;

    public Usuario(String usuario, Boolean ativo) {
        this.usuario = usuario;
        this.ativo = ativo;
    }
}

Utilizando .map para transformar elementos de uma lista

O map permite criar novas listas mapeando valores de uma coleção para transformar e obter novos resultados.

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

public class Exercicio05 {

    public static void main(String[] args) {
        List<String> G7 = Arrays.asList("USA", "Japan", "France", "Germany", "Italy", "U.K.","Canada");

        // transformar todos os paises para letras maiusculas e concatenar em uma string utilizando join por , com java 8
        List<String> maiuscula = G7.stream()
                .map(a -> a.toUpperCase())
                .collect(Collectors.toList());

        System.out.println( String.join(",", maiuscula) );
    }
}

Exemplo de utilização do map para multiplicar valores de uma collection para obter uma nova lista com os valores do calculo.

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

public class Exercicio06 {

    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(9, 10, 3, 4, 7, 3, 4);

        // multiplicar todos os números em por eles mesmos e criar uma nova lista com o resultado da multiplicação.
        // ao final imprimir usando java 8
        List<Integer> collect = numbers.stream()
                .map(n -> n * n)
                .collect(Collectors.toList());

        collect.forEach(System.out::println);
    }
}

Obter dados estatísticos a partir de uma coleção

Usando a classe IntSummaryStatistics podemos obter alguns valores a partir de uma lista de dados, para este exemplo foi utilizado uma classe lista com números inteiros.

import java.util.Arrays;
import java.util.IntSummaryStatistics;
import java.util.List;

public class Exercicio07 {

    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(2, 3, 5, 7, 11, 13, 17, 19, 23, 29);

        // Usando java 8 retire estatisticas da lista como maximo, minimo, soma e média
        IntSummaryStatistics stats = numbers.stream().mapToInt((x) -> x).summaryStatistics();

        System.out.println( stats.getMax() );
        System.out.println( stats.getMin() );
        System.out.println( stats.getSum() );
        System.out.println( stats.getAverage() );
        System.out.println( stats.getCount() );
    }
}

Não deixe de ver este outro post onde é mostrado como fazer Ordenação de listas com Java 8 e Lambdas Expression.

Caso tenham dúvidas deixem nos comentários.


Não esqueca de deixar suas dúvidas nos comentários e compartilhar este post.


Apoiadores

Publique seu post no Receitas de Código

Aguarde, estamos trabalhando para que você possa publicar sua postagem no Receitas de Código!