Filtering Collections

filter and Friends

Example

fun main() {
    val nums = listOf(5, 12, 7, 20, 3, 12, 15)
    println(nums.filter { it > 10 })
    println(nums.filterNot { it > 10 })
    println(nums.filterIndexed { i, _ -> i % 2 == 0 })
    println(nums.distinct())
    println(nums.take(3))
    println(nums.drop(5))
    println(nums.takeWhile { it < 20 })
    println(nums.first { it > 10 })
    println(nums.firstOrNull { it > 100 })

    val mixed: List<Any> = listOf("a", 1, "b", 2.5, 3)
    println(mixed.filterIsInstance<Int>())
}

Output

[12, 20, 12, 15]
[5, 7, 3]
[5, 7, 3, 15]
[5, 12, 7, 20, 3, 15]
[5, 12, 7]
[12, 15]
[5, 12, 7]
12
null
[1, 3]

Checking Conditions

Example

fun main() {
    val marks = listOf(78, 92, 35, 66)
    println("any failed?   ${marks.any { it < 40 }}")
    println("all passed?   ${marks.all { it >= 40 }}")
    println("none above 95? ${marks.none { it > 95 }}")
    println("count >= 60:  ${marks.count { it >= 60 }}")
    println("contains 92:  ${92 in marks}")
}

Output

any failed?   true
all passed?   false
none above 95? true
count >= 60:  3
contains 92:  true