0

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

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

结果应该是:

TreeSet(2, 5, 6)
4

1 回答 1

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)

注意:您并没有真正替换这里的任何东西(至少不像数组。)您正在做的是使用 aSortedSet和 usingdrop删除第一个元素(在这种情况下恰好是排序顺序中的最小值),然后您正在向集合中添加另一个元素。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已经在集合中,所以它没有被添加(同样,集合的一个属性是它不包含重复项。)

于 2013-10-31T09:04:59.460 回答