The Personal Blog of Todd Sharp

A Groovy Alternative To Java 8 Streams and Collectors

Posted By: Todd Sharp on 3/22/2017 4:19 GMT
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 start an argument over which language is better, but my immediate thought was that it would make a good blog post to show how one might 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: