Kotlin中takeWhile()和filter()方法之间的区别

11 collections kotlin

我正在做练习,我发现我可以使用takeWhile()filter()方法获得相同的结果,所以我想知道何时必须使用其中一种.

谢谢你,欢迎任何想与我分享的消息来源.

小智 27

两者之间的区别是filter()方法返回一个列表,其中包含与特定条件匹配的元素.并且takeWhile()方法还返回一个列表,其中包含与特定条件匹配的元素,但只考虑列表中的第一个元素.

一个例子:

val numbers = arrayOf(3, 3, 3, 9, 1, 4, 5, 8, 96, 3, 66, 3, 3, 3)

println("*** takeWhile()")
println(numbers.takeWhile { it == 3 })
println("*** filter()")
println(numbers.filter { it -> it == 3 })
Run Code Online (Sandbox Code Playgroud)

那会给你:

*** takeWhile()
[3, 3, 3]
*** filter()
[3, 3, 3, 3, 3, 3, 3]
Run Code Online (Sandbox Code Playgroud)


Vic*_*cky 7

filter 将迭代整个输入迭代器,而 takewhile 将在谓词变为 False 时中断,如果您有一个迭代器,其第一个元素的谓词为 false,则 takewhile 将在第一次迭代时中断并返回空