有没有kotlin惯用的方法来检查序列是否至少包含N个元素?
寻找建立序列的Kotlin惯用方法时,元素数量最少。到目前为止,我已经完成了这项工作:有没有kotlin惯用的方法来检查序列是否至少包含N个元素?,kotlin,Kotlin,寻找建立序列的Kotlin惯用方法时,元素数量最少。到目前为止,我已经完成了这项工作: fun <T> Sequence<T>.hasMinimum(threshold: Int): Boolean = take(threshold).toList().size == threshold fun Sequence.hasmimum(阈值:Int):布尔值= take(阈值).toList().size==阈值 有更好的方法吗?我想您可以使用count(),因为
fun <T> Sequence<T>.hasMinimum(threshold: Int): Boolean =
take(threshold).toList().size == threshold
fun Sequence.hasmimum(阈值:Int):布尔值=
take(阈值).toList().size==阈值
有更好的方法吗?我想您可以使用
count()
,因为它是一个终端操作符
返回此序列中的元素数
操作是终端
public fun Sequence.count():Int{…}
对于你的情况,我们可以写下来
fun <T> Sequence<T>.hasMinimum(threshold: Int): Boolean =
count() == threshold
fun Sequence.hasmimum(阈值:Int):布尔值=
count()=阈值
fun Sequence.hasmimum(阈值:Int)=take(阈值)。count()==阈值
count>=threshold
如果序列有10000个元素,但我的阈值是5,我希望序列在达到5后终止。啊,这一点很好。那么,我所能做的就是将您的toList().size
替换为count
。这确实有助于减少更多。这是一个终端操作符,但将继续处理序列,直到完成为止。一旦达到阈值,我就不想终止。另外,在函数中,您要查找==阈值,我认为它应该是>=阈值。@Mojtaba Haddadi这不起作用,您需要按照其他答案中的建议使用take()
。即使您更改count()>=threshold
,那么sequenceOf(1,2)。hasmimum(3)
返回true
@Rjbcc58,所以编辑您的问题并将此功能添加到其中。问题是要求元素的“最小”数量。
fun <T> Sequence<T>.hasMinimum(threshold: Int) = take(threshold).count() == threshold