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) {
List palavras = 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) {
List palavras = 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);
}
}
Nenhum comentário:
Postar um comentário