Drop family
OK, this is cool if you have to iterate over all elements in your collection anyway. But with the for
loops in Java, you could do something like this:
// Skips first two elements for (int i = 2; i < list.size(); i++) { // Do something here }
How are you going to achieve that with your funky functions, huh?
Well, for that there's drop()
:
val numbers = (1..5).toList() println(numbers.drop(2)) // [3, 4, 5]
Do note that this doesn't modify the original collection in any way:
println(numbers) // [1, 2, 3, 4, 5]
If you would like to stop your loop earlier, there's dropLast()
for that:
println(numbers.dropLast(2)) // [1, 2, 3]
Another interesting function is dropWhile()
, in which it receives a predicate instead of a number. It skips until the predicate returns true for the first time:
val readings = listOf(-7, -2, -1, -1, 0, 1, 3, 4)
println(readings.dropWhile {
it <= 0
}) // [1, 3, 4]
And there's the accompanying dropLastWhile()
.