【Scala集合】16、集合Set

在这里插入图片描述

在 Scala 中,Set 是一种集合类型,用于存储一组不重复的元素。Scala 提供了可变(Mutable)Set 和不可变(Immutable)Set 两种类型。

一、可变Set

可变 Set 具有添加、删除和更新元素的能力,并且可以原地修改集合。可变集合的类位于 scala.collection.mutable 包下。

示例使用可变 Set:

import scala.collection.mutable.Set

// 创建可变 Set
val mutableSet = Set(1, 2, 3)

// 添加元素
mutableSet.add(4)
mutableSet += 5

// 删除元素
mutableSet.remove(3)
mutableSet -= 2

// 输出可变 Set
println(mutableSet) // 输出:Set(1, 4, 5)

二、不可变Set

不可变 Set 是不可更改的,一旦创建后,就不能修改它们。要添加、删除或更新元素,会返回一个新的 Set。不可变集合的类位于 scala.collection.immutable 包下。

示例使用不可变 Set:

// 创建不可变 Set
val immutableSet = Set(1, 2, 3)

// 添加元素(会返回一个新的 Set)
val newImmutableSet = immutableSet + 4

// 删除元素(会返回一个新的 Set)
val newerImmutableSet = newImmutableSet - 3

// 输出原始不可变 Set 和新的 Set
println(immutableSet) // 输出:Set(1, 2, 3)
println(newerImmutableSet) // 输出:Set(1, 2, 4)

注意:在 Scala 中,强烈推荐使用不可变集合类型,因为它们具有更好的线程安全性和函数式编程特性。只有在特定需要进行原地修改集合的场景下,才应该使用可变集合类型。不可变集合在并发环境下更安全,也更易于推理和测试,因此是函数式编程的重要支持工具。

三、Set的特性

除了可变和不可变的 Set 之外,Scala 的 Set 还有一些其他重要的特性和用法,让我们来了解一下:

  1. Set 的特性:

    • Set 是一种集合,其中不允许出现重复元素。每个元素在 Set 中只能出现一次。
    • Set 是无序的,元素之间没有确定的顺序。
    • Set 是不可索引的,不能通过索引来访问元素。
  2. Set 的创建:

    • 使用 Set 伴生对象的 apply 方法创建 Set:
    val mySet: Set[Int] = Set(1, 2, 3)
    
    • 使用 Set 的工厂方法创建 Set:
    val mySet: Set[Int] = Set.empty[Int]
    val anotherSet: Set[Int] = Set(4, 5, 6)
    
  3. Set 的常用操作:

    • +:添加元素到 Set,返回新的 Set。
    • -:从 Set 中删除元素,返回新的 Set。
    • ++:合并两个 Set,返回新的 Set。
    • --:从 Set 中删除另一个 Set 中的元素,返回新的 Set。
    • contains:检查 Set 是否包含指定元素。
    • size:获取 Set 的大小(元素个数)。
  4. Set 的转换:

    • 使用 map 方法对 Set 的元素进行映射。
    • 使用 filter 方法筛选满足条件的元素。
    • 使用 flatMap 方法将 Set 中的元素进行扁平化。
  5. Set 的交集、并集和差集:

    • 使用 intersect 方法计算两个 Set 的交集。
    • 使用 union 方法计算两个 Set 的并集。
    • 使用 diff 方法计算两个 Set 的差集。
val set1: Set[Int] = Set(1, 2, 3)
val set2: Set[Int] = Set(3, 4, 5)

val intersection: Set[Int] = set1.intersect(set2) // 交集:Set(3)
val union: Set[Int] = set1.union(set2) // 并集:Set(1, 2, 3, 4, 5)
val difference: Set[Int] = set1.diff(set2) // 差集:Set(1, 2)
  1. Set 的遍历:
    • 使用 foreach 方法遍历 Set 中的每个元素。
val mySet: Set[Int] = Set(1, 2, 3)

mySet.foreach {
    
     element =>
  println(element)
}
  1. 可变 Set 的特有操作:
    • 可变 Set 支持原地修改,可以使用 +=-= 操作符来添加和删除元素。
import scala.collection.mutable.Set

val mutableSet = Set(1, 2, 3)

mutableSet += 4
mutableSet -= 2

println(mutableSet) // 输出:Set(1, 3, 4)

总结:Set 是 Scala 中表示集合的数据类型,其中不允许重复元素。Scala 提供了不可变和可变两种类型的 Set,不可变 Set 更适合函数式编程和多线程环境。Set 支持常见的集合操作,包括增加、删除、转换、遍历等。另外,Set 还支持计算交集、并集和差集等常见的集合运算。

猜你喜欢

转载自blog.csdn.net/m0_47256162/article/details/132159803