SlideShare a Scribd company logo
FP in JAVA 8 
sponsored by ! 
Ignasi Marimon-Clos (@ignasi35) 
JUG Barcelona
@ignasi35 
thanks!
@ignasi35 
about you
@ignasi35 
about me 
@ignasi35 
1) problem solver, Garbage Collector, mostly 
scala, java 8, agile for tech teams 
2) kayaker 
3) under construction 
4) all things JVM
@ignasi35 
FP in Java 8 
Pure Functions 
no side effects 
if not used, remove it 
fixed in — fixed out
@ignasi35 
FP in Java 8 
(T, R) -> Q
@ignasi35 
FP in Java 8 
Supplier<T> 
Function<T,R> 
BiFunction<T,R,Q> 
Predicate<T> 
Consumer<T> 
() -> T 
(T) -> R 
(T, R) -> Q 
(T) -> boolean 
(T) -> {}
@ignasi35 
currying 
(T, R) -> (Q) -> (S) -> J 
BiArgumentedPrototipicalFactoryFactoryBean
@ignasi35
@ignasi35 
thanks!
@ignasi35 
End of presentation
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35 
XXIst Century DateTime
@ignasi35 
XXIst Century DateTime 
• Date is DEAD (my opinion) 
• Calendar is DEAD (my opinion) 
! 
! • DEAD is 57005 (that’s a fact)
@ignasi35 
XXIst Century DateTime 
• Clock 
• LocalDate 
• LocalDateTime 
• Duration vs Period 
• ZonedDateTime 
! • Enum.Month 
• Enum.DayOfWeek
@ignasi35 
XXIst Century DateTime 
Enum.Month 
! • Not just JAN, FEB, MAR 
• Full arithmetic 
• plus(long months) 
• firstDayOfYear(boolean leapYear) 
• length(boolean leapYear) 
• …
@ignasi35 
XXIst Century DateTime 
• Clock 
• replace your sys.currentTimeMillis 
• allows testing 
• Instant/now 
• LocalDate 
• LocalDateTime 
• Duration vs Period 
• ZonedDateTime
@ignasi35
@ignasi35 
XXIst Century DateTime 
• Clock 
• LocalDate 
• a date 
• no TimeZone 
• birth date, end of war, man on moon,… 
• LocalDateTime 
• Duration vs Period 
• ZonedDateTime
@ignasi35
@ignasi35 
XXIst Century DateTime 
• Clock 
• LocalDate 
• LocalDateTime 
• an hour of the day 
• noon 
• 9am 
• Duration vs Period 
• ZonedDateTime
@ignasi35
@ignasi35 
XXIst Century DateTime 
• Clock 
• LocalDate 
• LocalDateTime 
• Duration vs Period 
• Duration: 365*24*60*60*1000 
• Period: 1 year (not exactly 365 days) 
• Duration (Time) vs Period (Date) 
• ZonedDateTime
@ignasi35
@ignasi35 
XXIst Century DateTime 
• Clock 
• LocalDate 
• LocalDateTime 
• Duration vs Period 
• ZonedDateTime (not an Instant!!) 
• Immutable 
• nanosecond detail 
• Normal, Gap, Overlap
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35 
Lists 
a1 1 2 3 
Nil 
List<Integer> nil = Lists.nil(); 
! 
List<Integer> a3 = nil.prepend(3); 
List<Integer> a2 = a3.prepend(2); 
List<Integer> a1 = a2.prepend(1);
@ignasi35 
Lists 
a1 1 2 3 
Nil 
head(); tail();
@ignasi35 
public interface List<T> { 
T head(); 
List<T> tail(); 
boolean isEmpty(); 
void forEach(Consumer<? super T> f); 
default List<T> prepend(T t) { 
return new Cons<>(t, this); 
} 
} 
Lists
@ignasi35 
Lists 
a1 
1 2 3 
Nil 
0 
a0 
b Cons 
Cons Cons Cons 
4 
Cons 
List<Integer> a0 = a1.prepend(0); 
List<Integer> b = a1.prepend(4);
@ignasi35 
class Cons<T> implements List<T> { 
private T head; 
private List<T> tail; 
Const(T head, List<T> tail) { 
this.head = head; 
this.tail = tail; 
} 
! 
T head(){return this.head;} 
List<T> tail(){return this.tail;} 
boolean isEmpty(){return false;} 
! 
void forEach(Consumer<? super T> f){ 
f.accept(head); 
tail.forEach(f); 
} 
} 
Lists
@ignasi35 
class Nil<T> implements List<T> { 
! 
T head() { 
throw new NoSuchElementException(); 
} 
List<T> tail() { 
throw new NoSuchElementException(); 
} 
boolean isEmpty() { 
return true; 
} 
void forEach(Consumer<? super T> f){ 
} 
! 
} 
Lists
@ignasi35 
Lists 
a1 
1 2 3 
Nil 
0 
a0 
b Cons 
Cons Cons Cons 
4 
Cons 
Persistent Datastructures (not ephemeral, versioning) 
Immutable 
As efficient (consider amortised cost)
@ignasi35
@ignasi35 
filter 
class Nil<T> implements List<T> { 
//… 
List<T> filter(Predicate<? super T> p) { 
return this; 
} 
} 
! 
class Cons<T> implements List<T> { 
//… 
List<T> filter(Predicate<? super T> p) { 
if (p.test(head)) 
return new Const<>(head, tail.filter(p)); 
else 
return tail.filter(p); 
} 
}
@ignasi35 
map
@ignasi35 
map 
f
@ignasi35 
map 
class Nil<T> implements List<T> { 
//… 
<R> List<R> map(Function<T, R> f) { 
return (List<R>) this; 
} 
} 
! 
class Cons<T> implements List<T> { 
//… 
<R> List<R> map(Function<T, R> f) { 
return new Const<>(f.apply(head), tail.map(f)); 
} 
}
@ignasi35
@ignasi35 
fold 
f 
f 
f
@ignasi35 
fold 
class Nil<T> implements List<T> { 
<Z> Z reduce(Z z, BiFunction<Z, T, Z> f) { 
return z; 
} 
} 
! 
class Cons<T> implements List<T> { 
<Z> Z reduce(Z z, BiFunction<Z, T, Z> f) { 
return tail.reduce(f.apply(z,head), f); 
} 
}
@ignasi35 
fold 
aka reduce
@ignasi35 
map revisited 
f
@ignasi35 
map revisited 
f
! 
@Test 
void testMapList() { 
List<List<String>> actual = Lists 
@ignasi35 
.of(“hello world”, “This is sparta”, “asdf asdf”) 
.map(s -> Lists.of(s.split(“ ”))); 
! 
List<String> expected = Lists.of(“hello”, “world”, 
“This”, “is”, “sparta”, “asdf”, “asdf”); 
! 
assertEquals(expected, actual); 
} 
map revisited
@ignasi35
@ignasi35
@ignasi35
@ignasi35 
map 
f
@ignasi35 
flatMap 
f
@ignasi35 
flatMap 
! 
class Cons<T> implements List<T> { 
//… 
<R> List<R> map(Function<T, R> f) { 
return new Const<>(f.apply(head), tail.map(f)); 
} 
! 
<R> List<R> flatMap(Function<T, List<R> f) { 
return f.apply(head).append(tail.flatMap(f)); 
} 
! 
}
@ignasi35
@ignasi35 
recap 
filter 
! 
map 
! 
fold 
! 
flatMap
@ignasi35
@ignasi35 
class MyFoo { 
! 
//@param surname may be null 
Person someFunc(String name, String surname) { 
… 
} 
! 
}
@ignasi35 
Maybe (aka Optional) 
replaces null completely
@ignasi35 
Maybe (aka Optional) 
replaces null completely 
forever
@ignasi35 
Maybe (aka Optional) 
replaces null completely 
forever 
and ever
@ignasi35 
Maybe (aka Optional) 
replaces null completely 
forever 
and ever 
and ever
@ignasi35 
Maybe (aka Optional) 
replaces null completely 
forever 
and ever 
and ever 
and ever
@ignasi35 
Maybe (aka Optional) 
replaces null completely 
forever 
and ever 
and ever 
and ever 
and ever
@ignasi35 
Maybe (aka Optional) 
replaces null completely 
forever 
and ever 
and ever 
and ever 
and ever 
and ever
@ignasi35 
Maybe (aka Optional) 
! 
class MyFoo { 
Person someFunc(String name, Optional<String> surname) { 
… 
} 
! 
… 
! 
}
@ignasi35 
Maybe (aka Optional) 
! 
class MyFoo { 
Optional<Person> someFunc(Name x, Optional<Surname> y) { 
… 
} 
! 
… 
! 
}
@ignasi35 
Maybe (aka Optional) 
Some/Just/Algo 
! 
! 
None/Nothing/Nada 
ADT
@ignasi35
@ignasi35 
Maybe (aka Optional) 
filter: applies predicate and Returns input or None 
map: converts content 
fold: returns Some(content) or Some(default) 
flatMap: see list 
get: returns content or throws Exception 
getOrElse: returns content or defaultValue
@ignasi35 
recap 
filter 
! 
map 
! 
fold 
! 
flatMap 
ADT 
! 
Functor
@ignasi35
@ignasi35
@ignasi35 
Future (aka 
CompletableFuture)
@ignasi35 
Future (aka CF, aka 
CompletableFuture) 
! 
[FAIL] Does not use map, flatMap, filter. 
! 
[PASS] CF implemented ADT 
! 
[FAIL] Because Supplier, Consumer, Function, 
Bifuction, … CF’s API sucks.
@ignasi35 
Future 
filter: creates new future applying Predicate 
map: converts content if success. New Future 
fold: n/a 
flatMap: see list 
andThen: chains this Future’s content into a Consumer 
onSuccess/onFailure: callbacks 
recover: equivalent to map() but applied only on Fail
@ignasi35 
recap 
filter 
! 
map 
! 
fold 
! 
flatMap 
! 
andThen 
ADT 
! 
Functor
@ignasi35 
recap 
! 
Maybe simulates nullable 
Future will eventually happen 
! 
Exceptions still fuck up your day
@ignasi35
@ignasi35
@ignasi35 
Try 
Simulates a computation that: 
! 
succeeded 
or 
threw exception
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35 
Try in action
@ignasi35 
Try in action
@ignasi35
@ignasi35 
Try in action
@ignasi35
@ignasi35 
! 
class PersonRepository { 
Try<Person> loadBy(Name x, Optional<Surname> y) { 
… 
} 
! 
… 
! 
} 
Conclusions
@ignasi35 
class SafeDatabase { 
<T> T withTransaction(Function<Connection, T> block) { 
… 
} 
} 
! 
class AnyAOP { 
<T> T envolve(Supplier<T> block) { 
… 
} 
} 
Conclusions
@ignasi35
@ignasi35
@ignasi35 
Moar resources 
https://github.com/rocketscience-projects/javaslang 
by https://twitter.com/danieldietrich 
thanks @thomasdarimont for the tip 
! 
https://github.com/functionaljava/functionaljava 
by http://www.functionaljava.org/ (runs in Java7)
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35 
Namaste
@ignasi35 
Questions
@ignasi35 
End of presentation
Ad

Recommended

Conversion of Infix To Postfix Expressions
Conversion of Infix To Postfix Expressions
Kulachi Hansraj Model School Ashok Vihar
 
Stack
Stack
Tejas Patel
 
Infix prefix postfix
Infix prefix postfix
Self-Employed
 
Introduction to r
Introduction to r
Ghassan Al-Yafie
 
Stacks fundamentals
Stacks fundamentals
greatqadirgee4u
 
openCypher Technology Compatibility Kit (TCK)
openCypher Technology Compatibility Kit (TCK)
openCypher
 
stack
stack
eShikshak
 
Return Oriented Programming (ROP chaining)
Return Oriented Programming (ROP chaining)
Abhinav Chourasia, GMOB
 
The Compatibility Challenge:Examining R and Developing TERR
The Compatibility Challenge:Examining R and Developing TERR
Lou Bajuk
 
Beginning Scala Svcc 2009
Beginning Scala Svcc 2009
David Pollak
 
뱅크샐러드 파이썬맛 레시피
뱅크샐러드 파이썬맛 레시피
겨울 정
 
String matching with finite state automata
String matching with finite state automata
Anmol Hamid
 
Quick sort algorithm using slide presentation , Learn selection sort example ...
Quick sort algorithm using slide presentation , Learn selection sort example ...
University of Science and Technology Chitttagong
 
Java ME API Next
Java ME API Next
Otávio Santana
 
Correctness and Performance of Apache Spark SQL
Correctness and Performance of Apache Spark SQL
Nicolas Poggi
 
Writing Perl 6 Rx
Writing Perl 6 Rx
lichtkind
 
Stack and its applications
Stack and its applications
Ahsan Mansiv
 
Kotlin For Android - Collections APIs (part 6 of 7)
Kotlin For Android - Collections APIs (part 6 of 7)
Gesh Markov
 
Ds stack 03
Ds stack 03
MuhammadZubair568
 
Jug Marche: Meeting June 2014. Java 8 hands on
Jug Marche: Meeting June 2014. Java 8 hands on
Onofrio Panzarino
 
Python to scala
Python to scala
kao kuo-tung
 
Heap Sort
Heap Sort
Faiza Saleem
 
Regular expressions, Alex Perry, Google, PyCon2014
Regular expressions, Alex Perry, Google, PyCon2014
alex_perry
 
Lab07 (1)
Lab07 (1)
AlexisHarvey8
 
LINEデリマでのElasticsearchの運用と監視の話
LINEデリマでのElasticsearchの運用と監視の話
LINE Corporation
 
SAP Inside Track Vienna 2018 #sitVIE - Back to the Future by adopting OO in A...
SAP Inside Track Vienna 2018 #sitVIE - Back to the Future by adopting OO in A...
t.eazzy
 
Lec21-CS110 Computational Engineering
Lec21-CS110 Computational Engineering
Sri Harsha Pamu
 
Ch4 Algorthmique Avancée - Analyse & complexité des Algorithmes
Ch4 Algorthmique Avancée - Analyse & complexité des Algorithmes
lotfibenromdhane
 
Java 8 Lambda Expressions & Streams
Java 8 Lambda Expressions & Streams
NewCircle Training
 
Database structure Structures Link list and trees and Recurison complete
Database structure Structures Link list and trees and Recurison complete
Adnan abid
 

More Related Content

What's hot (19)

The Compatibility Challenge:Examining R and Developing TERR
The Compatibility Challenge:Examining R and Developing TERR
Lou Bajuk
 
Beginning Scala Svcc 2009
Beginning Scala Svcc 2009
David Pollak
 
뱅크샐러드 파이썬맛 레시피
뱅크샐러드 파이썬맛 레시피
겨울 정
 
String matching with finite state automata
String matching with finite state automata
Anmol Hamid
 
Quick sort algorithm using slide presentation , Learn selection sort example ...
Quick sort algorithm using slide presentation , Learn selection sort example ...
University of Science and Technology Chitttagong
 
Java ME API Next
Java ME API Next
Otávio Santana
 
Correctness and Performance of Apache Spark SQL
Correctness and Performance of Apache Spark SQL
Nicolas Poggi
 
Writing Perl 6 Rx
Writing Perl 6 Rx
lichtkind
 
Stack and its applications
Stack and its applications
Ahsan Mansiv
 
Kotlin For Android - Collections APIs (part 6 of 7)
Kotlin For Android - Collections APIs (part 6 of 7)
Gesh Markov
 
Ds stack 03
Ds stack 03
MuhammadZubair568
 
Jug Marche: Meeting June 2014. Java 8 hands on
Jug Marche: Meeting June 2014. Java 8 hands on
Onofrio Panzarino
 
Python to scala
Python to scala
kao kuo-tung
 
Heap Sort
Heap Sort
Faiza Saleem
 
Regular expressions, Alex Perry, Google, PyCon2014
Regular expressions, Alex Perry, Google, PyCon2014
alex_perry
 
Lab07 (1)
Lab07 (1)
AlexisHarvey8
 
LINEデリマでのElasticsearchの運用と監視の話
LINEデリマでのElasticsearchの運用と監視の話
LINE Corporation
 
SAP Inside Track Vienna 2018 #sitVIE - Back to the Future by adopting OO in A...
SAP Inside Track Vienna 2018 #sitVIE - Back to the Future by adopting OO in A...
t.eazzy
 
Lec21-CS110 Computational Engineering
Lec21-CS110 Computational Engineering
Sri Harsha Pamu
 
The Compatibility Challenge:Examining R and Developing TERR
The Compatibility Challenge:Examining R and Developing TERR
Lou Bajuk
 
Beginning Scala Svcc 2009
Beginning Scala Svcc 2009
David Pollak
 
뱅크샐러드 파이썬맛 레시피
뱅크샐러드 파이썬맛 레시피
겨울 정
 
String matching with finite state automata
String matching with finite state automata
Anmol Hamid
 
Correctness and Performance of Apache Spark SQL
Correctness and Performance of Apache Spark SQL
Nicolas Poggi
 
Writing Perl 6 Rx
Writing Perl 6 Rx
lichtkind
 
Stack and its applications
Stack and its applications
Ahsan Mansiv
 
Kotlin For Android - Collections APIs (part 6 of 7)
Kotlin For Android - Collections APIs (part 6 of 7)
Gesh Markov
 
Jug Marche: Meeting June 2014. Java 8 hands on
Jug Marche: Meeting June 2014. Java 8 hands on
Onofrio Panzarino
 
Regular expressions, Alex Perry, Google, PyCon2014
Regular expressions, Alex Perry, Google, PyCon2014
alex_perry
 
LINEデリマでのElasticsearchの運用と監視の話
LINEデリマでのElasticsearchの運用と監視の話
LINE Corporation
 
SAP Inside Track Vienna 2018 #sitVIE - Back to the Future by adopting OO in A...
SAP Inside Track Vienna 2018 #sitVIE - Back to the Future by adopting OO in A...
t.eazzy
 
Lec21-CS110 Computational Engineering
Lec21-CS110 Computational Engineering
Sri Harsha Pamu
 

Viewers also liked (20)

Ch4 Algorthmique Avancée - Analyse & complexité des Algorithmes
Ch4 Algorthmique Avancée - Analyse & complexité des Algorithmes
lotfibenromdhane
 
Java 8 Lambda Expressions & Streams
Java 8 Lambda Expressions & Streams
NewCircle Training
 
Database structure Structures Link list and trees and Recurison complete
Database structure Structures Link list and trees and Recurison complete
Adnan abid
 
Java 8 Stream API and RxJava Comparison
Java 8 Stream API and RxJava Comparison
José Paumard
 
Ch2 Algorthmique Avancée - Récursivité
Ch2 Algorthmique Avancée - Récursivité
lotfibenromdhane
 
Functional programming with Java 8
Functional programming with Java 8
Talha Ocakçı
 
Ch5 Algorthmique Avancée - Algorithme de Tri
Ch5 Algorthmique Avancée - Algorithme de Tri
lotfibenromdhane
 
Functional Programming in Java
Functional Programming in Java
Premanand Chandrasekaran
 
Notifications
Notifications
Youssef ELBOUZIANI
 
Ch7 algorithmes NP-Copmlétude
Ch7 algorithmes NP-Copmlétude
lotfibenromdhane
 
Ch3 Algorthmique Avancée - Méthodes Récursives
Ch3 Algorthmique Avancée - Méthodes Récursives
lotfibenromdhane
 
Java 8-streams-collectors-patterns
Java 8-streams-collectors-patterns
José Paumard
 
Functional programming in java
Functional programming in java
John Ferguson Smart Limited
 
Ch1 Algorthmique Avancée - Rappel & Notions de Base
Ch1 Algorthmique Avancée - Rappel & Notions de Base
lotfibenromdhane
 
Cats
Cats
Riadh Harizi
 
JDK 8, lambdas, streams, collectors - Bretagne Tour
JDK 8, lambdas, streams, collectors - Bretagne Tour
José Paumard
 
Java 8, Streams & Collectors, patterns, performances and parallelization
Java 8, Streams & Collectors, patterns, performances and parallelization
José Paumard
 
Functional programming with Java 8
Functional programming with Java 8
LivePerson
 
Alphorm.com Formation Autodesk Revit 2018 : Les nouveautés
Alphorm.com Formation Autodesk Revit 2018 : Les nouveautés
Alphorm
 
Alphorm.com Formation Java Server Faces
Alphorm.com Formation Java Server Faces
Alphorm
 
Ch4 Algorthmique Avancée - Analyse & complexité des Algorithmes
Ch4 Algorthmique Avancée - Analyse & complexité des Algorithmes
lotfibenromdhane
 
Java 8 Lambda Expressions & Streams
Java 8 Lambda Expressions & Streams
NewCircle Training
 
Database structure Structures Link list and trees and Recurison complete
Database structure Structures Link list and trees and Recurison complete
Adnan abid
 
Java 8 Stream API and RxJava Comparison
Java 8 Stream API and RxJava Comparison
José Paumard
 
Ch2 Algorthmique Avancée - Récursivité
Ch2 Algorthmique Avancée - Récursivité
lotfibenromdhane
 
Functional programming with Java 8
Functional programming with Java 8
Talha Ocakçı
 
Ch5 Algorthmique Avancée - Algorithme de Tri
Ch5 Algorthmique Avancée - Algorithme de Tri
lotfibenromdhane
 
Ch7 algorithmes NP-Copmlétude
Ch7 algorithmes NP-Copmlétude
lotfibenromdhane
 
Ch3 Algorthmique Avancée - Méthodes Récursives
Ch3 Algorthmique Avancée - Méthodes Récursives
lotfibenromdhane
 
Java 8-streams-collectors-patterns
Java 8-streams-collectors-patterns
José Paumard
 
Ch1 Algorthmique Avancée - Rappel & Notions de Base
Ch1 Algorthmique Avancée - Rappel & Notions de Base
lotfibenromdhane
 
JDK 8, lambdas, streams, collectors - Bretagne Tour
JDK 8, lambdas, streams, collectors - Bretagne Tour
José Paumard
 
Java 8, Streams & Collectors, patterns, performances and parallelization
Java 8, Streams & Collectors, patterns, performances and parallelization
José Paumard
 
Functional programming with Java 8
Functional programming with Java 8
LivePerson
 
Alphorm.com Formation Autodesk Revit 2018 : Les nouveautés
Alphorm.com Formation Autodesk Revit 2018 : Les nouveautés
Alphorm
 
Alphorm.com Formation Java Server Faces
Alphorm.com Formation Java Server Faces
Alphorm
 
Ad

Similar to Functional Programming in JAVA 8 (20)

Map, Flatmap and Reduce are Your New Best Friends: Simpler Collections, Concu...
Map, Flatmap and Reduce are Your New Best Friends: Simpler Collections, Concu...
Chris Richardson
 
Map, flatmap and reduce are your new best friends (javaone, svcc)
Map, flatmap and reduce are your new best friends (javaone, svcc)
Chris Richardson
 
Java 8 Stream API. A different way to process collections.
Java 8 Stream API. A different way to process collections.
David Gómez García
 
Good functional programming is good programming
Good functional programming is good programming
kenbot
 
Functional Programming 101 for Java 7 Developers
Functional Programming 101 for Java 7 Developers
Jayaram Sankaranarayanan
 
Map(), flatmap() and reduce() are your new best friends: simpler collections,...
Map(), flatmap() and reduce() are your new best friends: simpler collections,...
Chris Richardson
 
Java Collections Framework - Interfaces, Classes and Algorithms
Java Collections Framework - Interfaces, Classes and Algorithms
RajalakshmiS74
 
LJ_JAVA_FS_Collection.pptx
LJ_JAVA_FS_Collection.pptx
Raneez2
 
OOP and FP: become a better programmer - Simone Bordet, Mario Fusco - Codemot...
OOP and FP: become a better programmer - Simone Bordet, Mario Fusco - Codemot...
Codemotion
 
OOP and FP - Become a Better Programmer
OOP and FP - Become a Better Programmer
Mario Fusco
 
JDK8 Functional API
JDK8 Functional API
Justin Lin
 
Thumbtack Expertise Days # 5 - Javaz
Thumbtack Expertise Days # 5 - Javaz
Alexey Remnev
 
Collections Framework Beginners Guide 2
Collections Framework Beginners Guide 2
Kenji HASUNUMA
 
Collections Framework Begineers guide 2
Collections Framework Begineers guide 2
Kenji HASUNUMA
 
Collections
Collections
Manav Prasad
 
Best core & advanced java classes in mumbai
Best core & advanced java classes in mumbai
Vibrant Technologies & Computers
 
EMFPath
EMFPath
mikaelbarbero
 
Java8lambda
Java8lambda
Isuru Samaraweera
 
Javaz. Functional design in Java 8.
Javaz. Functional design in Java 8.
Vadim Dubs
 
Collections
Collections
bsurya1989
 
Map, Flatmap and Reduce are Your New Best Friends: Simpler Collections, Concu...
Map, Flatmap and Reduce are Your New Best Friends: Simpler Collections, Concu...
Chris Richardson
 
Map, flatmap and reduce are your new best friends (javaone, svcc)
Map, flatmap and reduce are your new best friends (javaone, svcc)
Chris Richardson
 
Java 8 Stream API. A different way to process collections.
Java 8 Stream API. A different way to process collections.
David Gómez García
 
Good functional programming is good programming
Good functional programming is good programming
kenbot
 
Functional Programming 101 for Java 7 Developers
Functional Programming 101 for Java 7 Developers
Jayaram Sankaranarayanan
 
Map(), flatmap() and reduce() are your new best friends: simpler collections,...
Map(), flatmap() and reduce() are your new best friends: simpler collections,...
Chris Richardson
 
Java Collections Framework - Interfaces, Classes and Algorithms
Java Collections Framework - Interfaces, Classes and Algorithms
RajalakshmiS74
 
LJ_JAVA_FS_Collection.pptx
LJ_JAVA_FS_Collection.pptx
Raneez2
 
OOP and FP: become a better programmer - Simone Bordet, Mario Fusco - Codemot...
OOP and FP: become a better programmer - Simone Bordet, Mario Fusco - Codemot...
Codemotion
 
OOP and FP - Become a Better Programmer
OOP and FP - Become a Better Programmer
Mario Fusco
 
JDK8 Functional API
JDK8 Functional API
Justin Lin
 
Thumbtack Expertise Days # 5 - Javaz
Thumbtack Expertise Days # 5 - Javaz
Alexey Remnev
 
Collections Framework Beginners Guide 2
Collections Framework Beginners Guide 2
Kenji HASUNUMA
 
Collections Framework Begineers guide 2
Collections Framework Begineers guide 2
Kenji HASUNUMA
 
Javaz. Functional design in Java 8.
Javaz. Functional design in Java 8.
Vadim Dubs
 
Ad

More from Ignasi Marimon-Clos i Sunyol (10)

The Emperor Has No Docs (Geecon Oct'23)
The Emperor Has No Docs (Geecon Oct'23)
Ignasi Marimon-Clos i Sunyol
 
Jeroglificos, Minotauros y la factura de la luz
Jeroglificos, Minotauros y la factura de la luz
Ignasi Marimon-Clos i Sunyol
 
Contributing to Akka (Hacktoberfest 2020)
Contributing to Akka (Hacktoberfest 2020)
Ignasi Marimon-Clos i Sunyol
 
Contributing to OSS (Scalator 2020-01-22)
Contributing to OSS (Scalator 2020-01-22)
Ignasi Marimon-Clos i Sunyol
 
Reactive Microsystems (Sw Crafters Barcelona 2018)
Reactive Microsystems (Sw Crafters Barcelona 2018)
Ignasi Marimon-Clos i Sunyol
 
Lagom Workshop BarcelonaJUG 2017-06-08
Lagom Workshop BarcelonaJUG 2017-06-08
Ignasi Marimon-Clos i Sunyol
 
Intro scala for rubyists (ironhack)
Intro scala for rubyists (ironhack)
Ignasi Marimon-Clos i Sunyol
 
Scala 101-bcndevcon
Scala 101-bcndevcon
Ignasi Marimon-Clos i Sunyol
 
Scala 101
Scala 101
Ignasi Marimon-Clos i Sunyol
 
Spray & Maven Intro for Scala Barcelona Developers Meetup
Spray & Maven Intro for Scala Barcelona Developers Meetup
Ignasi Marimon-Clos i Sunyol
 

Recently uploaded (20)

“From Enterprise to Makers: Driving Vision AI Innovation at the Extreme Edge,...
“From Enterprise to Makers: Driving Vision AI Innovation at the Extreme Edge,...
Edge AI and Vision Alliance
 
Mastering AI Workflows with FME - Peak of Data & AI 2025
Mastering AI Workflows with FME - Peak of Data & AI 2025
Safe Software
 
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Alliance
 
“Why It’s Critical to Have an Integrated Development Methodology for Edge AI,...
“Why It’s Critical to Have an Integrated Development Methodology for Edge AI,...
Edge AI and Vision Alliance
 
FIDO Alliance Seminar State of Passkeys.pptx
FIDO Alliance Seminar State of Passkeys.pptx
FIDO Alliance
 
FME for Good: Integrating Multiple Data Sources with APIs to Support Local Ch...
FME for Good: Integrating Multiple Data Sources with APIs to Support Local Ch...
Safe Software
 
Kubernetes Security Act Now Before It’s Too Late
Kubernetes Security Act Now Before It’s Too Late
Michael Furman
 
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
NTT DATA Technology & Innovation
 
Crypto Super 500 - 14th Report - June2025.pdf
Crypto Super 500 - 14th Report - June2025.pdf
Stephen Perrenod
 
FIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptx
FIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptx
FIDO Alliance
 
Viral>Wondershare Filmora 14.5.18.12900 Crack Free Download
Viral>Wondershare Filmora 14.5.18.12900 Crack Free Download
Puppy jhon
 
Reducing Conflicts and Increasing Safety Along the Cycling Networks of East-F...
Reducing Conflicts and Increasing Safety Along the Cycling Networks of East-F...
Safe Software
 
Bridging the divide: A conversation on tariffs today in the book industry - T...
Bridging the divide: A conversation on tariffs today in the book industry - T...
BookNet Canada
 
MuleSoft for AgentForce : Topic Center and API Catalog
MuleSoft for AgentForce : Topic Center and API Catalog
shyamraj55
 
Creating Inclusive Digital Learning with AI: A Smarter, Fairer Future
Creating Inclusive Digital Learning with AI: A Smarter, Fairer Future
Impelsys Inc.
 
Providing an OGC API Processes REST Interface for FME Flow
Providing an OGC API Processes REST Interface for FME Flow
Safe Software
 
FIDO Seminar: Targeting Trust: The Future of Identity in the Workforce.pptx
FIDO Seminar: Targeting Trust: The Future of Identity in the Workforce.pptx
FIDO Alliance
 
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
biswajitbanerjee38
 
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
caoyixuan2019
 
FIDO Seminar: New Data: Passkey Adoption in the Workforce.pptx
FIDO Seminar: New Data: Passkey Adoption in the Workforce.pptx
FIDO Alliance
 
“From Enterprise to Makers: Driving Vision AI Innovation at the Extreme Edge,...
“From Enterprise to Makers: Driving Vision AI Innovation at the Extreme Edge,...
Edge AI and Vision Alliance
 
Mastering AI Workflows with FME - Peak of Data & AI 2025
Mastering AI Workflows with FME - Peak of Data & AI 2025
Safe Software
 
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Alliance
 
“Why It’s Critical to Have an Integrated Development Methodology for Edge AI,...
“Why It’s Critical to Have an Integrated Development Methodology for Edge AI,...
Edge AI and Vision Alliance
 
FIDO Alliance Seminar State of Passkeys.pptx
FIDO Alliance Seminar State of Passkeys.pptx
FIDO Alliance
 
FME for Good: Integrating Multiple Data Sources with APIs to Support Local Ch...
FME for Good: Integrating Multiple Data Sources with APIs to Support Local Ch...
Safe Software
 
Kubernetes Security Act Now Before It’s Too Late
Kubernetes Security Act Now Before It’s Too Late
Michael Furman
 
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
NTT DATA Technology & Innovation
 
Crypto Super 500 - 14th Report - June2025.pdf
Crypto Super 500 - 14th Report - June2025.pdf
Stephen Perrenod
 
FIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptx
FIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptx
FIDO Alliance
 
Viral>Wondershare Filmora 14.5.18.12900 Crack Free Download
Viral>Wondershare Filmora 14.5.18.12900 Crack Free Download
Puppy jhon
 
Reducing Conflicts and Increasing Safety Along the Cycling Networks of East-F...
Reducing Conflicts and Increasing Safety Along the Cycling Networks of East-F...
Safe Software
 
Bridging the divide: A conversation on tariffs today in the book industry - T...
Bridging the divide: A conversation on tariffs today in the book industry - T...
BookNet Canada
 
MuleSoft for AgentForce : Topic Center and API Catalog
MuleSoft for AgentForce : Topic Center and API Catalog
shyamraj55
 
Creating Inclusive Digital Learning with AI: A Smarter, Fairer Future
Creating Inclusive Digital Learning with AI: A Smarter, Fairer Future
Impelsys Inc.
 
Providing an OGC API Processes REST Interface for FME Flow
Providing an OGC API Processes REST Interface for FME Flow
Safe Software
 
FIDO Seminar: Targeting Trust: The Future of Identity in the Workforce.pptx
FIDO Seminar: Targeting Trust: The Future of Identity in the Workforce.pptx
FIDO Alliance
 
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
biswajitbanerjee38
 
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
caoyixuan2019
 
FIDO Seminar: New Data: Passkey Adoption in the Workforce.pptx
FIDO Seminar: New Data: Passkey Adoption in the Workforce.pptx
FIDO Alliance
 

Functional Programming in JAVA 8