Java LinkedHashMap 在 Play Framework 2.0 模板中循环时不维护插入顺序

标签 java collections playframework-2.0 linkedhashmap scala-template

在游戏框架的 (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/

相关文章:

java - 转换递归函数并更多地调用迭代函数java

java - 最佳搜索给定区域中的 2D 点(网络服务)

java - Heroku运行play框架2时出错

java - Play Framework 2.0 中公共(public)字段的使用

java - Play 框架中的表单验证

java - 列标题未显示在 JTable 中

java - 什么是 TLS SSL 与 java 1.6 中的 jersey 库的兼容性?

java - 如何使用 Java 的 lambda 表达式来打印数组?

java - 如何检查两个集合是否相等,忽略大小写?

已排序集合的 Java 对象排序