Na palestra do CESAR EDU falei um pouco sobre as expressões lambdas. Fizemos uma discussão sobre as Expressões Lambda e os impactos da incorporação desta funcionalidade na linguagem, além das principais novidades do Java 8.
Abordagem tradicional:
import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; public class TestesJava7 { public static void main(String[] args) { Listpalavras = Arrays.asList("Olynto", "Denise", "Maria", "Douglas"); Comparator comparator = new Comparator () { @Override public int compare(String o1, String o2) { // ordenacao por nome return o1.compareTo(o2); } }; // ordenar a lista (Java 7) Collections.sort(palavras, comparator); System.out.println("Java 7\n"); for (String value : palavras) { System.out.println(value); } } // fim main } // fim classe
Abordagem com lambdas:
import java.time.LocalDate; import java.time.Month; import java.time.temporal.TemporalAdjusters; import java.util.Arrays; import java.util.Comparator; import java.util.List; public class TestesJava8 { public static void main(String[] args) { Listpalavras = Arrays.asList("Olynto", "Denise", "Maria", "Douglas"); ordenaPalavras3(palavras); imprimirFormaTradicional(palavras); datas(); } // forma Lambda 1 private static void ordenaPalavras1(List palavras) { Comparator comparator = (s1, s2) -> { return s1.compareTo(s2); }; // usando o objeto List palavras.sort(comparator); } // forma Lambda 2 private static void ordenaPalavras2(List palavras) { // Lambda 2 Comparator comparator = (s1, s2) -> s1.compareTo(s2); palavras.sort(comparator); } // forma Lambda 3 - direto ao ponto :) private static void ordenaPalavras3(List palavras) { palavras.sort((s1, s2) -> s1.compareTo(s2)); } private static void imprimirFormaTradicional(List palavras) { // nao podem ser concorrentes automaticamente for (String value : palavras) { System.out.println(value); } } private static void imprimirFormaLambda(List palavras) { // podem ser palavras.forEach(s -> System.out.println(s)); } private static void datas() { // Fluent LocalDate hoje = LocalDate.now(); LocalDate diaPagamento = hoje.with(TemporalAdjusters.lastDayOfMonth()).minusDays(2); System.out.println("hoje -> "+hoje); System.out.println("dia pagamento -> "+diaPagamento); // Immutable LocalDate dateOfBirth = LocalDate.of(1977, Month.OCTOBER, 9); LocalDate firstBirthday = dateOfBirth.plusYears(4); System.out.println("dateOfBirth: "+dateOfBirth); System.out.println("firstBirthday: "+firstBirthday); } }