The Personal Blog of Todd Sharp

A Groovy Alternative To Java 8 Streams and Collectors

Posted By: Todd Sharp on 3/22/2017 8:19 UTC
Tagged: Groovy, Java
I recently read this article over at DZone about using Java 8 Streams and Collectors to manipulate and perform calculations on a list of integers.  I don't intend to get in a pissing match about which language is better, but my immediate thought was how much easier (and cleaner) it is to perform these tasks in Groovy.  Collections in Groovy have long been a shining example of how Groovy enhances Java with convenience methods for common tasks.  Here's a recreation of all the examples in the DZone post to show you how easy Groovy makes them:

Let's throw together a List of 100 random integers:

Determining the sum and average is quite simple:

Though, average isn't a built in method.  So, let's add it using metaprogramming instead:

What about min/max?

There's no built in method to the DZone summarizingInt() example, but we can do either: 

Or, again, add a method via metaprogramming:

Partitioning a list?  No problem in Groovy, just use groupBy:

Here's the full example in case you'd like to run them all yourself: