如何从排序列表中选择第二个最小元素?

时间:2014-12-29 00:14:29

标签: scala

如何在列表排序后选择第二个最小元素?

使用此代码我收到错误,我不明白为什么。

object find_the_median {
  val L = List(2,4,1,2,5,6,7,2)

  L(2)
  L.sorted(2) // FIXME returns an error
}

1 个答案:

答案 0 :(得分:6)

这是因为sorted隐式收到了Ordering个参数,而当你像L.sorted(2)那样做时,类型检查员认为你想要2作为Ordering {1}}。因此,一行中的一种方法是:

L.sorted.apply(2)

或避免apply明确传递顺序:

L.sorted(implicitly[Ordering[Int]])(2)

我承认有点困惑,所以我认为最好的是两行:

val sorted = L.sorted
sorted(2)

(您可能还希望遵守使用小写命名变量的Scala约定。)