【发布时间】:2020-10-20 07:57:22
【问题描述】:
我有一个这样的文本文件
NameOne,2,3,3
NameTwo,1,0,2
我想在 Scala 的每一行中找到最大值的索引。所以这个的输出是
NameOne,1,2
NameTwo,2
我目前正在使用下面的函数来执行此操作,但我似乎找不到没有 for 循环的简单方法,我想知道是否有更好的方法。
def findIndices(movieRatings: String): (String) = {
val tokens = movieRatings.split(",", -1)
val movie = tokens(0)
val ratings = tokens.slice(1, tokens.size)
val max = ratings.max
var indices = ArrayBuffer[Int]()
for (i<-0 until ratings.length) {
if (ratings(i) == max) {
indices += (i+1)
}
}
return movie + "," + indices.mkString(",")
}
这个函数是这样调用的:
val output = textFile.map(findIndices).saveAsTextFile(args(1))
刚开始学习 Scala,所以任何建议都会有所帮助!
【问题讨论】:
标签: scala functional-programming scala-collections