如何在scala列表中查找多个最大参数

如何在scala列表中查找多个最大参数,scala,Scala,晚上好,, 如何在scala列表中查找多个最大参数: val finale = list(2,2,3,4,6,6); val indexMax = finale.zipWithIndex.maxBy(_._1)._2 这里我只能找到一个最大值(6)的参数,但我想找到最后两个(6)值一个简单的foldLeft怎么样 finale.foldLeft(Seq.empty[Int]) { case (max @ head :: _, element) if element == h

晚上好,, 如何在scala列表中查找多个最大参数:

val finale = list(2,2,3,4,6,6);    
val indexMax = finale.zipWithIndex.maxBy(_._1)._2

这里我只能找到一个最大值(6)的参数,但我想找到最后两个(6)值

一个简单的foldLeft怎么样

  finale.foldLeft(Seq.empty[Int]) {
    case (max @ head :: _, element) if element == head => max :+ element
    case (max @ head :: _, element) if element > head => Seq(element)
    case (Nil, element) => Seq(element)
    case (max, _) => max
  }

不使用Seq可以更有效地实现这一点。

根据Rajkumar的注释进行了明显修改,该代码段返回一个列表,其中包含列表中最大元素的索引

def findMaximumIndices(list: List[Int]): List[Int] =
  list.zipWithIndex.groupBy(_._1).maxBy(_._1)._2.map(_._2)

val list = List(2,2,3,4,6,6)
val maximumIndices = findMaximumIndices(list)
// maximumIndices: List[Int] = List(4, 5)

由于过度使用带有下划线匿名函数表示法的元组访问器,这一点相当模糊<代码>(\uu.\u1)。

试试
结局。群比(x=>x)。马克比(\uu.\u1)
谢谢“路易斯·米格尔·梅西亚·苏亚雷斯”非常有帮助:)我解决了我的问题。@LuisMiguelMejíaSuárez你介意把它作为一个实际的答案发布吗?如果你想找到最后两个6,为什么你要用索引来写ziping?@Andreytukin抱歉花了这么长时间,我只是删除了评论,将其作为一个答案发布。OP想“找到”它们——我假设出现最大值的索引列表。