Groovy adds a number of methods to java.lang.Object, most of which deal with types that serve as collections or aggregates, such as Lists or DOM Nodes.

Return Value




any {closure}

returns true if the closure returns true for any item


collect {closure}

returns a list of all items that were returned from the closure


collect(Collection collection) {closure}

same as above, but adds each item to the given collection


each {closure}

simply executes the closure for each item


eachWithIndex {closure}

same as each{} except it passes two arguments: the item and the index


every {closure}

returns true if the closure returns true for all items


find {closure}

returns the first item that matches the closure expression


findAll {closure}

returns all items that match the closure expression


findIndexOf {closure}

returns the index of the first item that matched the given expression

See the GDK documentation on Object for the complete list of added methods.

Since the "return" keyword is optional in Groovy, closures in this context act as "predicates" and return the boolean result of whatever expression you given in your closure. These predicates allow you to apply perform operations on aggregate objects in a very concise manner.


def numbers = [ 5, 7, 9, 12 ]
assert numbers.any { it % 2 == 0 }                        //returns true since 12 is even

assert numbers.every { it > 4 }                           //returns true since all #s are > 4

assert numbers.findAll { it in 6..10 } == [7,9]           //returns all #s > 5 and < 11

assert numbers.collect { ++it } == [6, 8, 10, 13]         //returns a new list with each # incremented

numbers.eachWithIndex{ num, idx -> println "$idx: $num" } //prints each index and number