为了便于使用,当我编写以下代码时
{1,2,3,4,5,6,7,8,9,10}
我希望Rascal控制台打印相同,但在输出窗口中我看到:
{10,9,8,7,6,5,4,3,2,1}
这个例子当然过于简单,为此,排序并没有真正受到伤害。但是,在更复杂的示例中,我希望对输出进行排序,以便我可以更轻松地验证集合中是否包含某个元素。
印刷套装的当前排序是否有意义?
答案 0 :(得分:3)
来自Rascal Tutor:
集合是无序的值序列,具有以下内容 属性:
- 所有元素都具有相同的静态类型。
- 元素的顺序无关紧要。
- 集合仅包含一次元素。换句话说,无论元素有多少次,都会消除重复的元素 添加到一个集合中,它只会出现一次。
在计算机科学中,集合是一种抽象的数据结构,可以存储某些值,没有任何特定的顺序,也没有重复的值。
因此,您观察到的行为与预期的一样,集合中没有顺序,显示的顺序是由于实现(java HashSet)。在打印之前或在施工期间进行排序会产生负面的性能开销,并且可能会给用户带来订单的错误印象。
关于第一个建议,使用与提供的相同的序列,这将需要效率较低的数据结构,并且会再次损害性能,我们必须打印一组。
答案 1 :(得分:2)
当然,你总能做到:
import List;
import Set;
sort(toList({4,2,1,3}))
如果你真的想要输出排序。