Scala Set 六大常用操作和例子:从元素操作到集合交互

77 阅读1分钟

1. 添加元素

var set1 = scala.collection.mutable.Set("apple", "grape", "apple", "pear")
set1 += "banana"
  • 使用 += 操作符向可变 Set 中添加元素
  • 由于 Set 不允许重复元素,添加已存在的元素不会报错,但也不会改变集合

2. 删除元素

set1 -= "grape"
  • 使用 -= 操作符从可变 Set 中删除元素
  • 如果删除的元素不存在,不会报错,集合也不会改变

3. 查询元素是否存在

if (set1.contains("apple")) {
  println("apple 存在")
}
  • contains 方法用于判断元素是否在 Set 中,返回 Boolean 值
  • 输出:apple 存在

4. 合并 Set

val set2 = scala.collection.mutable.Set("orange")
val set3 = set1.union(set2) // 或者 set1 ++ set2
  • union 方法(或 ++ 操作符)用于合并两个 Set,返回一个新的 Set,包含两者所有元素
  • 结果:set3 包含 apple, pear, banana, orange

5. 求交集

val hobby1 = scala.collection.mutable.Set("看书", "听歌")
val hobby2 = scala.collection.mutable.Set("打球", "看书")
val rst = hobby1.intersect(hobby2)
  • intersect 方法用于获取两个 Set 的交集
  • 结果:rst 为 Set("看书")

6. 求差集

val classes1 = scala.collection.mutable.Set("语文", "数学", "英语")
val classes2 = scala.collection.mutable.Set("数学", "物理")
val rst1 = classes2.diff(classes1)
  • diff 方法用于获取前者相对于后者的差集
  • classes2.diff(classes1) 的结果是 Set("物理")
  • 如果是 classes1.diff(classes2),结果则是 Set("语文", "英语")

不可变 Set 的注意事项

如果使用不可变 Set,则不能直接用 += 或 -= 修改,需要重新赋值:

var set = Set(1, 2, 3)
set += 4 // 实际是创建新 Set 并赋值给 set

总结

  • 可变 Set:可以直接修改集合(添加 / 删除元素)

  • 不可变 Set:每次修改都会生成新集合

  • 常用操作:

    • 添加:+=
    • 删除:-=
    • 查询:contains
    • 并集:union 或 ++
    • 交集:intersect
    • 差集:diff