GDK Methods

13.1 Iteration and Transformation

def nums = [5, 3, 8, 1, 9, 2]
nums.each { print "$it " }
nums.eachWithIndex { n, i -> print "$i:$n " }
println nums.collect { it * 2 }                       // map
println nums.collectMany { [it, it] }                 // flatMap
println nums.findAll { it > 4 }                       // filter
println nums.find { it > 4 }                          // first match
println nums.findIndexOf { it > 4 }, nums.findResult { it > 7 ? "big:$it" : null }
println nums.grep { it % 2 == 0 }, ['a', 1, 'b'].grep(String)   // grep with isCase
println nums.inject(0) { acc, n -> acc + n }          // reduce/fold
println nums.inject { a, b -> a * b }
println nums.sum(), nums.sum { it * 2 }, nums.count { it > 3 }, nums.average()   // average: Groovy 3+
println nums.any { it > 8 }, nums.every { it > 0 }
println nums.min(), nums.max { it % 5 }, nums.sort(false) { -it }
println nums.groupBy { it % 2 == 0 ? 'even' : 'odd' }
println nums.countBy { it > 4 }
println nums.split { it > 4 }                         // [[5, 8, 9], [3, 1, 2]]
println nums.takeWhile { it > 2 }, nums.dropWhile { it > 2 }, nums.take(2), nums.drop(4)
println nums.collate(4, 2), nums.indexed(), nums.withIndex()
println nums.toSorted(), num
…

13.2 Object and Iterable Utilities

println [1, 2, 3].iterator().toList(), (1..5).toList().chunked?.call(2)   // version-dependent helpers
def obj = new Object()
println obj.dump(), obj.inspect(), obj.properties
5.times { }
println [1, 2, 3].asBoolean(), "".asBoolean()
println [a: 1].toMapString(), [1, 2].toListString()

13.3 Lazy Iteration

def lazyEvens = (1..Integer.MAX_VALUE).iterator().findAll { it % 2 == 0 }.take(5).toList()
// Groovy 2.5+: Iterator.findAll/collect/take are lazy on iterators
println lazyEvens