生成的 HTML 中显示的元素顺序与集合中元素的顺序不匹配



我在努力理解为什么会发生这种情况时变得疯狂:我有一个包含6个整数的集合(一个不可变的SortedSet),我通过.map方法迭代它们来创建我生成的HTML。每次重新加载页面时,HTML页面中的元素总是以不同的顺序显示。

这是我的模板中的一些节选

@deltas = @{ scala.collection.SortedSet[Int]( -15, -10, -5, 5, 10, 15) }
     @*** More code here ***@
@Logger.debug("DELTAS="+deltas.toString())
@deltas.map { delta =>
<li>
  @Logger.debug("DELTA="+delta.toString())
  <a href="#">@{dist.toDouble.intValue + delta}&nbsp;km (@delta)</a>
</li>
}

我还尝试将输出记录到屏幕上-参见Logger -并且如预期的那样,元素总是以正确的顺序显示。

[debug] application - DELTAS=TreeSet(-15, -10, -5, 5, 10, 15)
[debug] application - DELTA=-15
[debug] application - DELTA=-10
[debug] application - DELTA=-5
[debug] application - DELTA=5
[debug] application - DELTA=10
[debug] application - DELTA=15

现在我只能说这个问题必须在模板引擎,但我想知道它是否是一个错误(不太可能),或者我只是需要知道更多关于它的一些棘手的方面(很可能)。

显然它似乎与模板引擎有关。我需要进一步调查找出原因。现在我可以用collection的迭代器来解决这个问题。

@for(delta <- deltas.iterator) {
<li>
  <a href="#">@{dist.toDouble.intValue + delta}&nbsp;km (@delta)</a>
</li>
}

您也可以将TreeSet转换为Seq,这也可以解决问题。

以前

更新前的第一条线索:

你可以阅读这个问题来了解更多关于SortedSet映射的知识

SortedSet map不总是保留结果中的元素顺序?

最新更新