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