Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在scala中对地图应用排序功能?_Java_Html_Scala_Playframework - Fatal编程技术网

Java 如何在scala中对地图应用排序功能?

Java 如何在scala中对地图应用排序功能?,java,html,scala,playframework,Java,Html,Scala,Playframework,我在Play框架中使用MVC架构,其中视图部分是scala和html的混合体。现在,我需要在视图中对来自控制器层的贴图进行排序。因为scala没有内存,所以很难创建一个排序函数来按时间戳对地图进行排序。 谁能帮我解决这个问题,因为我是scala新手 这是我的第一个问题。任何帮助都将不胜感激。假设时间戳是映射的键(即,它是一个映射[Long,B]): 也就是说,您首先将映射转换为Seq,以便保留元素顺序(映射通常是HashMaps,具有不可预测的顺序),然后按键值元组的第一个元素对序列进行排序 如

我在Play框架中使用MVC架构,其中视图部分是scala和html的混合体。现在,我需要在视图中对来自控制器层的贴图进行排序。因为scala没有内存,所以很难创建一个排序函数来按时间戳对地图进行排序。 谁能帮我解决这个问题,因为我是scala新手


这是我的第一个问题。任何帮助都将不胜感激。

假设时间戳是映射的键(即,它是一个
映射[Long,B]
):

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

如果时间戳是值,则将
.\u1
替换为
.\u2

请注意,如果您将中间
Seq
转换回
Map
(例如,使用
.toMap
),您将再次回到
HashMap
区域,并且您的排序将消失

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

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

在这里,我们将
myMap
转换为
Seq
,这样就可以将它传递给
SortedMap
的varargs工厂方法,我们需要了解更多来回答这个问题,但可能类似于
map.toList.sortBy(u.timestamp)
是您想要的。“scala没有内存”等等,什么?Scala集合中也有ListMap,可以是可变的,也可以是不可变的,这将保持键的顺序。当然,但是ListMap是用来保持插入顺序的,但是我们需要排序。就我个人而言,我不使用
ListMap
,它的性能特点使它不适合我所关心的大多数用途。
scala.collection.immutable.SortedMap(myMap.toSeq: _*) // yields a SortedMap[Long, B]