📜  Scala集合-TreeSet(1)

📅  最后修改于: 2023-12-03 15:19:58.968000             🧑  作者: Mango

Scala集合-TreeSet

概述

Scala中的集合框架提供了多种不同的集合类型,其中之一是TreeSet。 TreeSet是一个有序的,可以进行快速搜索和访问的Set,它是通过红黑树实现的。TreeSet中的元素是按照排序顺序依次存放的,保证了快速的查找与遍历。

创建一个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

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是非常方便和易用的。它提供了许多有用的方法,比如添加、删除、筛选、查找和遍历。在需要排序或需要快速查找某个元素时,它很适合使用。