In an attempt to become a stronger user of Groovy and Jira, I’m challenging myself to learn something new each day for 100 days. These aren’t always going to be especially long blog posts, but they’ll at least be something that I find interesting or novel.
If we want to work with the elements in a collection, we have a number of options. My favourite method is to use a closure with .each, which could be as simple as this:
def eachList = [5, 10, 15]
eachList.each{element ->
log.warn(element.toString())
}
The closure allows us to iterate through each element in the collection.
Groovy also has a .collect method. Implementing it would look something like this:
def collectList = [1, 2, 3]
def squaredCollectList = collectList.collect { element ->
element * element
}
return squaredCollectList
So what’s the practical difference?
With .each, we’re simply iterating through a collection of elements that already exists. With .collect, we’re defining a new collection (squaredCollectList). We then iterate through all of the elements of the predefined list (collectList), square the element, and add the result to the newly defined collection.
In simple terms, .each iterates through a list. .collect iterates through a list and adds the transformed elements to a new collection.
The collect method is useful if you want to easily transform an entire collection of objects into a collection of a different type of objects. The each method is useful if you simply want to iterate through a collection and do something with each element.
Leave a Reply