如何替换Scala中有序集合中的第一个元素?排序集的“补丁”是否有类似的功能?它甚至可能吗?
val a = SortedSet(1,5,6)
val b = a.patch(0, seq[2], 1)
println(b)
结果应该是:
TreeSet(2, 5, 6)
答案 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
已经在集合中,所以它没有添加(同样,集合的属性是它不包含重复项。)