Scala Set - 默认行为

时间:2014-08-10 09:59:13

标签: scala set scala-collections

想知道scala如何安排数据集。

scala> val imm = Set(1, 2, 3, "four")                  //immutable variable
imm  : scala.collection.immutable.Set[Any] = Set(1, 2, 3, four)

scala> var mu = Set(1, 2, 3, "four", 9)  
mu: scala.collection.immutable.Set[Any] = Set(four, 1, 9, 2, 3)

scala> mu += "five"

scala> mu.toString 
res1: String = Set(four, 1, 9, 2, 3, five)

在我们插入不可变Set但不在可变Set中的情况下,顺序仍然存在。 此外,无论我使用var xyz = Set(1, 2, 3, "four", 9)创建新集合多少次,存储的顺序都保持不变Set(four, 1, 9, 2, 3)。所以它不是随机存储的,它背后有一些我想知道的逻辑。而且,这种行为有什么好处吗?

1 个答案:

答案 0 :(得分:3)

设置没有订单。项目在集合中或不是。这就是你能知道的一套。

如果您需要某种顺序,则需要使用有序集或可能是有序集。

当然,集合的任何特定实现可能会或可能不会顺序地具有在多个调用之间可能稳定或不稳定的排序,但这将是一个纯粹意外的实现细节,可能在更新期间随时更改Scala甚至两次电话之间。