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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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)