我找到了这个:

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版本,第一个不是。

07-26 09:13