Más contenido relacionado La actualidad más candente (18) Similar a Eclipse Collections, Java Streams & Vavr - What's in them for Functional Programming (20) Eclipse Collections, Java Streams & Vavr - What's in them for Functional Programming1. Eclipse Collections, Java Streams & Vavr -
What's in them for
Functional Programming
Naresha K
Independent Consultant
@naresha_k
https://blog.nareshak.com/
6. public static List<Developer>
getSampleListOfDevelopers() {
List<Developer> developers = new
ArrayList<>();
developers.add(new Developer("Raj", 30,
Arrays.asList("Java", "JavaScript")));
developers.add(new Developer("Meena", 24,
Arrays.asList("Java", "Groovy", "Scala")));
developers.add(new Developer("Mark", 28,
Arrays.asList("Java", "JavaScript", "Groovy")));
return developers;
}
9. Set<String> languagesKnown = developers
.stream()
.map(developer -> developer.getLanguages())
.flatMap(List::stream)
.collect(Collectors.toSet());
System.out.println(languagesKnown);
10. MutableList<Developer> developers = Lists.mutable.of(
new Developer("Raj", 30, Arrays.asList("Java", "JavaScript")),
new Developer("Meena", 24, Arrays.asList("Java", "Groovy", "Scala")),
new Developer("Mark", 28, Arrays.asList("Java", "JavaScript", "Groovy"))
);
11. MutableList<Developer> developersYoungerThan30 =
developers
.select(developer -> developer.getAge() < 30);
System.out.println("Age < 30: " + developersYoungerThan30);
System.out.println("All Devs: " + developers);
MutableList<Developer> developersYoungerThan30Alternate =
developers
.reject(developer -> developer.getAge() >= 30);
System.out.println("Age < 30: " + developersYoungerThan30Alternate);
12. String namesOfDevelopers = developers
.collect(developer -> developer.getName())
.makeString(", ");
System.out.println("Names: " + namesOfDevelopers);
13. MutableList<String> languages = developers
.flatCollect(developer ->
Lists.mutable.ofAll(developer.getLanguages()))
.distinct();
System.out.println(languages);
14. List<Developer> developers = List.of(
new Developer("Raj", 30, Arrays.asList("Java", "JavaScript")),
new Developer("Meena", 24, Arrays.asList("Java", "Groovy", "Scala")),
new Developer("Mark", 28, Arrays.asList("Java", "JavaScript", "Groovy")));
16. String namesOfDevelopers = developers
.map(developer -> developer.getName())
.intersperse(", ")
.reduce((v1, v2) -> v1 + v2);
System.out.println(namesOfDevelopers);
17. List<String> languagesKnown = developers
.map(developer -> developer.getLanguages())
.flatMap(Function.identity())
.distinct();
System.out.println(languagesKnown);
19. Mutable vs Immutable
Java Streams
Implicit (Effectively Final)
Collections - mostly mutable
Eclipse Collections Explicit / Different APIs
Vavr Immutable only
21. Eager vs Lazy
Java Streams Lazy
Eclipse Collections Explicit / Different APIs
Vavr Explicit / Different APIs
23. Serial vs Parallel
Java Streams
Serial (default)
Easy to switch to Parallel
Eclipse Collections
Serial (default)
Limited support for Parallel
Vavr No support for Parallel
29. Container Factory
List Lists
Set Sets, HashingStrategySets
Bag Bags
Stack Stacks
SortedBag SortedBags
SortedSet SortedSets
Map Maps, HashingStrategyMaps
SortedMap SortedMaps
BiMap BiMaps
Multimap Multimaps
https://github.com/eclipse/eclipse-collections/blob/master/docs/guide.md#-creating-mutable-collections