📅  最后修改于: 2023-12-03 15:19:58.968000             🧑  作者: Mango
Scala中的集合框架提供了多种不同的集合类型,其中之一是TreeSet。 TreeSet是一个有序的,可以进行快速搜索和访问的Set,它是通过红黑树实现的。TreeSet中的元素是按照排序顺序依次存放的,保证了快速的查找与遍历。
可以通过以下方式创建一个TreeSet:
import scala.collection.immutable.TreeSet
val treeSet = TreeSet(3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5)
println(treeSet)
// 输出:TreeSet(1, 2, 3, 4, 5, 6, 9)
注意上面的代码中有几个重复的数字,但实际上只会出现一个。这是因为TreeSet中不允许有重复的元素。
与其他集合一样,可以使用 + 和 - 操作符来添加和删除元素。
val treeSet = TreeSet(3, 1, 4)
val newTreeSet = treeSet + 2
println(newTreeSet)
// 输出:TreeSet(1, 2, 3, 4)
val newerTreeSet = newTreeSet - 3
println(newerTreeSet)
// 输出:TreeSet(1, 2, 4)
TreeSet的遍历非常简单,可以使用 foreach 函数对每个元素进行操作。
val treeSet = TreeSet(3, 1, 4)
treeSet.foreach(println)
// 输出:
// 1
// 3
// 4
可以使用 head 和 last 函数获取在TreeSet中最小和最大的元素
val treeSet = TreeSet(3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5)
println(treeSet.head)
// 输出:1
println(treeSet.last)
// 输出:9
可以使用 contains 函数检查集合中是否存在某个元素。
val treeSet = TreeSet(3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5)
println(treeSet.contains(2))
// 输出:true
println(treeSet.contains(7))
// 输出:false
可以使用 filter 函数根据条件筛选元素。例如,以下代码将只保留偶数。
val treeSet = TreeSet(3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5)
val evenTreeSet = treeSet.filter(_ % 2 == 0)
println(evenTreeSet)
// 输出:TreeSet(2, 4, 6)
可以使用 union、intersect 和 diff 函数取两个Set的并集、交集和差集。例如,以下代码取两个集合的并集。
val set1 = TreeSet(1,2,3)
val set2 = TreeSet(2,3,4)
println(set1.union(set2))
// 输出:TreeSet(1, 2, 3, 4)
可以使用 reverse 函数反转一个Set。例如,以下代码反转了一个集合。
val set = TreeSet(1,2,3,4,5)
println(set.reverse)
// 输出:TreeSet(5, 4, 3, 2, 1)
TreeSet还提供了很多其他的操作,例如 map、flatMap、foldLeft、reduceLeft 等等,这里不一一赘述,可以到Scala官方文档查看更多内容。
可以看到,Scala中的TreeSet是非常方便和易用的。它提供了许多有用的方法,比如添加、删除、筛选、查找和遍历。在需要排序或需要快速查找某个元素时,它很适合使用。