Eu apenas comecei com Kotlin e ao experimentar, eu encontrei este:
fun main(args: Array<String>) {
val list: MutableList<Int> = mutableListOf(1, 2, 3, 4, 5)
list.removeAll { x -> x in 1..3 }
E
list.removeIf { x -> x in 1..3 }
}
ambos resultar em mesma saída
4
5
Apesar de eu entender que removeAll é Kotlin e removeIf é Java, mas eu não entendo por que removeAll está lá quando removeIf já estava lá? E para o fato de que nós poderíamos usar removeIf em Kotlin sem qualquer aborrecimento. Ou há qualquer caso de uso que pode precisar de um sobre o outro?
Aqueles são muito, muito diferentes funções, mas em Kotlin o método está sobrecarregado, ou seja, ele tem dois tipos diferentes de argumentos para a função.
Se você ler o doc, você pode ver que você pode usar esta função, dando uma coleção:
fun <T> MutableCollection<out T>.removeAll(
elements: Collection<T>
): Boolean (source)
Ou dar uma função para filtrar:
fun <T> MutableIterable<T>.removeAll(
predicate: (T) -> Boolean
): Boolean (source)
Assim, o segundo é como a versão Java do removeIf, o primeiro não é.