我正在做练习,我发现我可以使用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)
filter 将迭代整个输入迭代器,而 takewhile 将在谓词变为 False 时中断,如果您有一个迭代器,其第一个元素的谓词为 false,则 takewhile 将在第一次迭代时中断并返回空
| 归档时间: |
|
| 查看次数: |
2019 次 |
| 最近记录: |