1

我在努力理解为什么会发生这种情况时变得疯狂:我有一个包含 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

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

4

1 回答 1

2

显然它似乎与模板引擎有关。我需要深入挖掘才能找出原因。此时,我可以通过使用集合的迭代器来建议解决此问题的方法。

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

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

以前的

更新前的第一条线索:

您可以阅读此问题以了解有关 SortedSet 映射的更多信息

SortedSet 映射并不总是在结果中保留元素排序?

于 2014-07-18T08:55:19.853 回答