Kotlin:更高级的函数来计算列表中出现的数量?

我正在尝试使用Kotlin的高阶函数来计算列表中包含特定元素的次数。 我试过类似的东西

val result: Int? = list.count{ list.contains("element") } 

但似乎是返回列表的大小,我不知道为什么。

  • 记录Kotlin中函数参数的参数
  • 如何避免返回SAM接口的函数的对象expression式
  • Kotlinfunction:需要的单位? findInt
  • 如何调用与lambda多个相似签名Kotlin方法?
  • 在Scala中可以用“等价的方法”表示kotlin吗?
  • Kotlin Higher Order Function以可变数量的参数作为parameter passing一个函数
  • 如何在Kotlin中使用GROUP BY执行COUNT(*)?
  • kotlin:用多个lambdaexpression式调用高阶函数
  • One Solution collect form web for “Kotlin:更高级的函数来计算列表中出现的数量?”

    你检查列表是否包含一个给定的元素(这将导致0或者列表的大小),尽管你真正想要的是计算与给定元素(而不是整个列表)相等的元素的数量。

    你需要做的是把list.contains("element") it == "element"

    count函数通过迭代列表并检查元素是否与谓词匹配。 近似的代码

     fun  Iterable.count(predicate: (T) -> Boolean) { var count = 0 for (element in this) { if (predicate(this)) { count += 1 } } return count } 

    当你传递list.contains("element")作为参数时, count函数返回0或list.size因为它检查同样的事情list.size次。

    这样做it == "element"虽然工作方式不同。 而不是检查整个列表,只检查当前元素。 如果你来自Java背景,你可能会更容易想到it一点:在Java中,如果你使用Kotlin,那么代码看起来有点像这个(element) -> element.equals("element")有一个只有1个参数的高阶函数,并没有明确地命名它,那么它默认it 。 你可以在这里阅读更多。

    Kotlin language will be the best programming language for Android.