Scala - 使用 .indexOf() 和 .indexWhere()

Scala - Use of .indexOf() and .indexWhere()

我有一个如下所示的元组:

(Age, List(19,17,11,3,2))

并且我想获得第一个元素在列表中的位置大于它们的值的位置。为此,我尝试使用 .indexOf() 和 .indexWhere() 但我可能找不到完全正确的语法,所以我不断得到:

value indexWhere is not a member of org.apache.spark.rdd.RDD[(String, Iterable[Int])]

到目前为止我的代码是:

val test =("Age", List(19,17,11,3,2))
test.indexWhere(_.2(_)<=_.2(_).indexOf(_.2(_)) )

我也在这里搜索了文档,没有结果:http://www.scala-lang.org/api/current/index.html#scala.collection.immutable.List

如果你想为 RDD 中的每个元素执行此操作,你可以使用 RDD 的 mapValues(它只会映射元组)并传递一个使用 indexWhere:

的函数
rdd.mapValues(_.zipWithIndex.indexWhere { case (v, i) => i+1 > v} + 1)

备注:

  • 您的示例似乎有误,如果您想要 last 匹配项,它应该是 5(2 的位置)而不是 4
  • 您没有定义当没有项目符合您的条件时应该做什么,例如对于 List(0,0,0) - 在这种情况下,结果将是 0 但不确定那是你需要的