Casamento de padrões (Pattern Matching)

Há alguma tempo atrás eu aprendi um pouco de Scala, uma linguagem muito interessante que roda sobre a JVM. Apesar de ser muito similar ao Java a primeira vista logo depois de um pouco mais de aprendizado lidamos com recursos muito diferentes do que temos na linguagem mais velha. Um recurso que me surpreendeu foi o casamento de padrões, ou pattern matching em inglês e vou usa-la de exemplo aqui pois até onde conheço o pattern matching do Scala é um dos mais completos. Diversas outras linguagens implementam também o recurso de maneira similar e as vezes com um pouco menos de poder, por isso vale conferir a documentação antes de prosseguir. ...

4 de outubro de 2021 · 4 min de leitura · Lucas Polo

Um pouco sobre cálculo lambda

25 de outubro de 2018 · 1 min de leitura · Lucas Polo

Mapeando e Reduzindo - Java 8

As vezes precisamos processar dados em um volume maior, onde é necessário filtrar a informação, selecionar ou alterar o que queremos para depois realizar o processamento. Como exemplo, vamos imaginar uma lista de alunos, onde cada instância tem seu nome e nota. Desta lista queremos a média geral, a média dos alunos aprovados (ou seja, quem tirou nota seis ou mais) e a média dos reprovados (nota menor que seis). Para isso, vamos primeiro visualizar nossa lista: ...

6 de março de 2014 · 5 min de leitura · Lucas Polo

Filtrando resultados (Predicados) - Java 8

Muitas vezes precisamos filtrar listas, listas de todos os tipos, desde números básicos, passando por Strings, até tipos complexos. Abaixo temos um exemplo simples disto, onde temos uma lista com alguns nomes e queremos filtra-la e exibi-la para o usuário (no caso, todos os nomes que tiverem a letra “u” serão exibidos): List<String> nomes = new ArrayList<>(); nomes.add("João da Silva"); nomes.add("Joaquim da Padaria"); nomes.add("Lucas Polo"); nomes.add("Chaves"); List<String> nomesFiltrados = new ArrayList<>(); System.out.println("Iniciando filtragem"); for (String nome : nomes) { System.out.println("Avaliando: " + nome); if (nome.contains("u")) nomesFiltrados.add(nome); } System.out.println("Iniciando impressão"); for (String nome : nomesFiltrados) { System.out.println(nome); } A saida é: Iniciando filtragem Avaliando: João da Silva Avaliando: Joaquim da Padaria Avaliando: Lucas Polo Avaliando: Chaves Iniciando impressão Joaquim da Padaria Lucas Polo Repare que primeiros os resultados são filtrados e depois exibidos, mas variando com o tamanho da lista, pode demorar muito tempo para filtrarmos uma lista inteira, e por isso, muitas vezes, é melhor avaliar se o elemento passa no filtro e trata-lo devidamente, ganhando assim mais velocidade. Na programação funcional, temos um meio de lidar com isso, chamado avaliação preguiçosa. ...

2 de março de 2014 · 3 min de leitura · Lucas Polo

Métodos como parâmetros - Java 8

O Java 8 que será lançado em breve e já possui versões de teste disponíveis para download tem uma novidade interessante, que é tratar métodos como objetos (criando assim o suporte a funções Lambda). Uma vez que métodos podem ser tratados como objetos, você pode passa-los como parâmetro ou cria-los em tempo de execução. Vamos dissecar mais sobre essas novidades no decorrer do tempo, mas por enquanto vamos ver um exemplo do que podemos fazer. Antigamente, para ler um arquivo e imprimir o seu conteúdo linha a linha poderíamos fazer algo assim: ...

22 de setembro de 2013 · 2 min de leitura · Lucas Polo