🏷 Collectors
2 patterns
Topic: Collectors
All Java patterns related to Collectors — java.evolved
Collections
Collectors.teeing()
Old
long count = items.stream().count();
double sum = items.stream()
.mapToDouble(Item::price)
.sum();
var result = new Stats(count, sum);
Modern
var result = items.stream().collect(
Collectors.teeing(
Collectors.counting(),
Collectors.summingDouble(Item::price),
Stats::new
)
);
hover to see modern →
JDK 12+
learn more →
Streams
Collectors.flatMapping()
Old
// Flatten within a grouping collector
// Required complex custom collector
Map<String, Set<String>> tagsByDept =
// no clean way in Java 8
Modern
var tagsByDept = employees.stream()
.collect(groupingBy(
Emp::dept,
flatMapping(
e -> e.tags().stream(),
toSet()
)
));
hover to see modern →
JDK 9+
learn more →