在游戏框架的 (2.0) 应用程序 Controller 中,我正在创建一个 java
LinkedHashMap<String, List<MyObject>)
保持我插入字符串键的顺序。
我尝试在模板中迭代这个 LinkedHashMap,如下所示:-
@for(currentKey <- linkedHashMapInstance.keySet()){
....
loop myObjectList for the currentKey
....
}
每当我刷新屏幕时,我得到的是随机顺序。
然后我尝试改变循环的逻辑
@for((currentKey , currentList) <- mapOfCards){
.. used the key and the list
}
现在我得到了一个一致的订单,但不是我插入的订单。 服务器端的调试日志显示正确的顺序。
我假设 Java 中的 LinkedHashMap 将保持插入的顺序 即使它是在 Scala 模板中呈现的。
我是不是做错了什么?
最佳答案
几个月前我也遇到过同样的问题。正如@nico_ekito 所指出的,这是一个与 Java->Scala 转换相关的问题。
要修复它,请尝试这样的操作:
@for((currentKey , currentList) <- SortedMap.empty[String, String] ++ mapOfCards) {
}
通过将 [String, String]
替换为您的 (currentKey , currentList)
的类型。
希望对我有所帮助,它对我有用。
关于Java LinkedHashMap 在 Play Framework 2.0 模板中循环时不维护插入顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13640593/