Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有kotlin惯用的方法来检查序列是否至少包含N个元素?_Kotlin - Fatal编程技术网

有没有kotlin惯用的方法来检查序列是否至少包含N个元素?

有没有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(),因为

寻找建立序列的Kotlin惯用方法时,元素数量最少。到目前为止,我已经完成了这项工作:

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