val indexedValues = values.view.zipWithIndex
val maxValue = indexedValues.toList.filter{case (v,i) => indexes.contains(i)}.maxBy(_._1)._1
indexedValues.filter{ case (v,i) => v==maxValue }.map(_._2).toList
在 Scala REPL 中:
Welcome to Scala 2.13.1 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_231).
Type in expressions for evaluation. Or try :help.
scala> val values = List(1, 200, 3, 4, 45, 45, 7, 8)
values: List[Int] = List(1, 200, 3, 4, 45, 45, 7, 8)
scala> val indexes = List(0, 4, 5, 7)
indexes: List[Int] = List(0, 4, 5, 7)
scala> val indexedValues = values.view.zipWithIndex
indexedValues: scala.collection.View[(Int, Int)] = View(<not computed>)
scala> val maxValue = indexedValues.toList.filter{case (v,i) => indexes.contains(i)}.maxBy(_._1)._1
maxValue: Int = 45
scala> indexedValues.filter{ case (v,i) => v==maxValue }.map(_._2).toList
res0: List[Int] = List(4, 5)