In Groovy we can use the drop()
and take()
methods to get elements from a collection or String
object. Since Groovy 1.8.7 we also can use the dropWhile()
and takeWhile()
methods and use a closure to define a condition to stop dropping or taking elements. With the dropWhile()
method we drop elements or characters until the condition in the closure is true
. And the takeWhile()
method returns elements from a collection or characters from a String
until the condition of the closure is true
.
In the following example we see how we can use the methods:
def s = "Groovy Rocks!" assert s.takeWhile { it != 'R' } == 'Groovy ' assert s.dropWhile { it != 'R' } == 'Rocks!' def list = 0..10 assert 0..4 == list.takeWhile { it < 5 } assert 5..10 == list.dropWhile { it < 5 } def m = [name: 'mrhaki', loves: 'Groovy', worksAt: 'JDriven'] assert [name: 'mrhaki'] == m.takeWhile { key, value -> key.length() == 4 } assert [loves: 'Groovy', worksAt: 'JDriven'] == m.dropWhile { it.key == 'name' }
(Code is written with Groovy 2.0.4)