SlideShare uma empresa Scribd logo
1 de 11
Java 8 – Entendendo streams,
lambdas e etc.
Marcelo Li Koga
2017
Marcelo Li Koga
• Eng. de computação
Poli/USP
• Embraer: desde 05/Abr/2016
• Área: GEO/SSP – Engenharia
de Operações / Software de
performance
Novidades Java 8
• Nova API de datas
• Default methods
• Method references
• Lambda
• Streams
Programação funcional
• Tudo são funções, como na matemática:
y = f(x)
• Dados são imutáveis
• Funções não tem efeito colateral
x = x + 1;
void function(x);
API de data
• Semelhante a JodaTime
LocalDate hoje = LocalDate.now();
LocalDate mesQueVem = hoje.plusDays(30);
Default Methods
public interface SoftwarePreferences {
String getProperty(String key);
default int getInt(String key) {
return Integer.parseInt(getProperty(key));
}
}
• Métodos em interfaces.
Lambdas
list.forEach(elem -> elem.setValue(0));
Streams
pessoas.stream()
.filter(pessoa -> pessoa.getSexo() == MASC)
.mapToInt(pessoa ->
pessoa.getIdade())
.average();
Exemplo: obter média de idade de todos os homens.
Streams
• Facilita paralelismo
• Lazy evaluation
• Optional
list.stream()
.filter(item -> item.getValue() > 0)
.findFirst();
Method reference
list.forEach(elem -> System.out.println(elem));
list.forEach(System.out::println);
Obrigado!
Contato:
marcelo.koga@embraer.com.br

Mais conteúdo relacionado

Semelhante a Java 8 - Entendendo streams, lambdas e etc.

python_funcional.pdf
python_funcional.pdfpython_funcional.pdf
python_funcional.pdfronaldo ramos
 
Big data para programadores convencionais
Big data para programadores convencionaisBig data para programadores convencionais
Big data para programadores convencionaisRoberto Oliveira
 
R: a alternativa ao SPSS e ao NVivo em software livre
R: a alternativa ao SPSS e ao NVivo em software livreR: a alternativa ao SPSS e ao NVivo em software livre
R: a alternativa ao SPSS e ao NVivo em software livreLuis Borges Gouveia
 
Planode Aula
Planode AulaPlanode Aula
Planode Aulasofteam
 
Programação funcional - o que é? Como aplicar? Quais os benefícios?
Programação funcional - o que é? Como aplicar? Quais os benefícios?Programação funcional - o que é? Como aplicar? Quais os benefícios?
Programação funcional - o que é? Como aplicar? Quais os benefícios?Gisely Lucas
 
TDC2017 - Misturando dados com Pentaho para insights mais significativos
TDC2017 - Misturando dados com Pentaho para insights mais significativosTDC2017 - Misturando dados com Pentaho para insights mais significativos
TDC2017 - Misturando dados com Pentaho para insights mais significativosAmbiente Livre
 
Curso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsCurso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsHelder da Rocha
 
[TDC2016] Apache SparkMLlib: Machine Learning na Prática
[TDC2016] Apache SparkMLlib:  Machine Learning na Prática[TDC2016] Apache SparkMLlib:  Machine Learning na Prática
[TDC2016] Apache SparkMLlib: Machine Learning na PráticaEiti Kimura
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a AspectosRicardo Terra
 

Semelhante a Java 8 - Entendendo streams, lambdas e etc. (20)

python_funcional.pdf
python_funcional.pdfpython_funcional.pdf
python_funcional.pdf
 
Big data para programadores convencionais
Big data para programadores convencionaisBig data para programadores convencionais
Big data para programadores convencionais
 
Aprendendo R
Aprendendo RAprendendo R
Aprendendo R
 
AulaAula1(introducao)
AulaAula1(introducao)AulaAula1(introducao)
AulaAula1(introducao)
 
R: a alternativa ao SPSS e ao NVivo em software livre
R: a alternativa ao SPSS e ao NVivo em software livreR: a alternativa ao SPSS e ao NVivo em software livre
R: a alternativa ao SPSS e ao NVivo em software livre
 
Calourada2010
Calourada2010Calourada2010
Calourada2010
 
Usando Java 8 no Android
Usando Java 8 no AndroidUsando Java 8 no Android
Usando Java 8 no Android
 
MapReduce
MapReduceMapReduce
MapReduce
 
Planode Aula
Planode AulaPlanode Aula
Planode Aula
 
Haskell - Introdução
Haskell - IntroduçãoHaskell - Introdução
Haskell - Introdução
 
Spring Data Jpa
Spring Data JpaSpring Data Jpa
Spring Data Jpa
 
Logica Programação. ...
Logica Programação. ...Logica Programação. ...
Logica Programação. ...
 
Programação funcional - o que é? Como aplicar? Quais os benefícios?
Programação funcional - o que é? Como aplicar? Quais os benefícios?Programação funcional - o que é? Como aplicar? Quais os benefícios?
Programação funcional - o que é? Como aplicar? Quais os benefícios?
 
TDC2017 - Misturando dados com Pentaho para insights mais significativos
TDC2017 - Misturando dados com Pentaho para insights mais significativosTDC2017 - Misturando dados com Pentaho para insights mais significativos
TDC2017 - Misturando dados com Pentaho para insights mais significativos
 
Apresentação Lua
Apresentação LuaApresentação Lua
Apresentação Lua
 
Curso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsCurso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e Streams
 
SFD - C# para a comunidade
SFD - C# para a comunidadeSFD - C# para a comunidade
SFD - C# para a comunidade
 
Funções e procedimentos
Funções e procedimentosFunções e procedimentos
Funções e procedimentos
 
[TDC2016] Apache SparkMLlib: Machine Learning na Prática
[TDC2016] Apache SparkMLlib:  Machine Learning na Prática[TDC2016] Apache SparkMLlib:  Machine Learning na Prática
[TDC2016] Apache SparkMLlib: Machine Learning na Prática
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a Aspectos
 

Java 8 - Entendendo streams, lambdas e etc.

Notas do Editor

  1. Classe anônima Interface funcional Não precisa return
  2. Limit, findAny, findFirst