我找到了这个:
fun main() {
val list: MutableList<Int> = mutableListOf(1, 2, 3, 4, 5)
list.removeAll { x -> x in 1..3 } // [4, 5]
list.removeIf { x -> x in 1..3 } // [4, 5]
}
他们两个产生相同的结果。
虽然我知道
removeAll
是Kotlin,而removeIf
是Java,但我不明白为什么removeAll
已经存在,为什么removeIf
存在?事实是,我们可以在Kotlin中轻松使用
removeIf
。还是有任何用例可能需要一个? 最佳答案
这些是非常不同的函数,但是在kotlin中,该方法已重载,这意味着该函数具有两种不同类型的参数。
如果您阅读该文档,可以看到可以通过提供一个集合来使用此功能:
fun <T> MutableCollection<out T>.removeAll(
elements: Collection<T>
): Boolean (source)
或提供过滤功能:
fun <T> MutableIterable<T>.removeAll(
predicate: (T) -> Boolean
): Boolean (source)
因此,第二个类似于removeIf的Java版本,第一个不是。