替换scala中有序集合中的元素

时间:2013-10-31 08:50:15

标签: scala set sorted

如何替换Scala中有序集合中的第一个元素?排序集的“补丁”是否有类似的功能?它甚至可能吗?

val a = SortedSet(1,5,6)
val b = a.patch(0, seq[2], 1)
println(b)

结果应该是:

TreeSet(2, 5, 6)

1 个答案:

答案 0 :(得分:2)

这个怎么样:

scala> val a = SortedSet(1,5,6)
a: scala.collection.SortedSet[Int] = TreeSet(1, 5, 6)


scala> val b = a.drop(1) + 2
b: scala.collection.SortedSet[Int] = TreeSet(2, 5, 6)

注意:你真的没有在这里替换任何东西(至少不像数组。)你正在做的是采用SortedSet并使用drop删除第一个元素(恰好在这种情况下,它是排序顺序中的最低值)然后您将另一个元素添加到集合中。 2仅位于第一个位置,因为它应该按排序顺序排列。

scala> a.drop(1) + 10
res21: scala.collection.SortedSet[Int] = TreeSet(5, 6, 10)

如您所见,如果添加10,它也会按照排序顺序排在最后。

此外,因为集合不能包含重复项,所以执行以下操作:

scala> a.drop(1) + 6
res22: scala.collection.SortedSet[Int] = TreeSet(5, 6)

删除第一个元素,并在集合中只留下两个元素。这是因为6已经在集合中,所以它没有添加(同样,集合的属性是它不包含重复项。)