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

Scala-使用.indexOf()和.indexWhere(),scala,apache-spark,indexof,Scala,Apache Spark,Indexof,我有一个如下所示的元组: (Age, List(19,17,11,3,2)) 我想得到第一个元素的位置,它们在列表中的位置大于它们的值。为此,我尝试使用.indexOf()和.indexWhere(),但可能找不到正确的语法,因此我不断得到: value indexWhere不是org.apache.spark.rdd.rdd[(字符串, Iterable[Int])] 到目前为止,我的代码是: val test =("Age", List(19,17,11,3,2)) test.indexW

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

(Age, List(19,17,11,3,2))
我想得到第一个元素的位置,它们在列表中的位置大于它们的值。为此,我尝试使用.indexOf()和.indexWhere(),但可能找不到正确的语法,因此我不断得到:

value indexWhere不是org.apache.spark.rdd.rdd[(字符串, Iterable[Int])]

到目前为止,我的代码是:

val test =("Age", List(19,17,11,3,2))
test.indexWhere(_.2(_)<=_.2(_).indexOf(_.2(_)) )
val测试=(“年龄”,列表(19,17,11,3,2))

test.indexWhere(u.2()如果要对RDD中的每个元素执行此操作,可以使用RDD的
mapValues
(仅映射元组的右侧)并传递使用
indexWhere
的函数:

rdd.mapValues(_.zipWithIndex.indexWhere { case (v, i) => i+1 > v} + 1)
注:

  • 您的示例似乎是错误的,如果您想要最后一个匹配项,它应该是5(位置2),而不是4
  • 您没有定义在没有任何项目与您的条件匹配时应执行的操作,例如,对于
    列表(0,0,0)
    -在这种情况下,结果将为0,但不确定这是否是您需要的

粘贴的代码与您描述的错误不相关:该错误意味着您试图在
org.apache.spark.rdd.rdd
上调用
indexWhere
,该方法没有这样的方法。
rdd
是分布式集合的抽象,并且它不是Scala集合库的一部分,因此不要期望使用e非常适合收藏库方法。我能克服这个问题吗?谢谢你的帮助!:)关于这个例子你是对的。。我指的是第一个条件成立的位置!如果这回答了你的问题-请接受答案;如果没有,请说明原因。否则,其他用户将无法帮助您或知道您是否需要它。