如何在scala中的Map上应用Sort函数?

时间:2014-05-08 22:35:21

标签: java html scala playframework

我在Play Framework中使用MVC架构,其中视图部分是scala和html的混合。现在,我需要在视图中对来自控制器层的Map进行排序。由于scala没有内存,因此很难创建一个排序函数来按时间戳对我的地图进行排序。 任何人都可以帮助我真的无法解决这个问题,因为我是斯卡拉的新手。

这是我的第一个问题。任何帮助都会得到赞赏。

1 个答案:

答案 0 :(得分:0)

假设时间戳是地图的(即它是Map[Long,B]):

myMap.toSeq.sortBy(_._1) // yields a Seq[Tuple2[Long,B]]

也就是说,您首先将地图转换为Seq,以便保留元素排序(地图通常是HashMap s,具有不可预测的顺序),然​​后按顺序排序键值元组的第一个元素。

如果时间戳是值,请将_._1替换为_._2

请注意,如果您将中间Seq转换回Map(例如使用.toMap),您将再次回到HashMap土地,并排序将会消失。

所以,这可能更像你想要的:

scala.collection.immutable.SortedMap(myMap.toSeq: _*) // yields a SortedMap[Long, B]

在这里,我们将myMap转换为Seq,以便将其传递给SortedMap的varargs工厂方法。