Combine and compare sets.

set-ops A set holds unique values. `union` merges two sets, `intersect` keeps shared values, and `contains` tests membership.

Set Operations

extra
SetOps.scala
Replay: real traced execution (multi-file project)
object Main {
  def main(args: Array[String]): Unit = {
    val extra = 4
    val a = Set(1, 2, 3)
    val b = Set(3, 4, 5)
    val both = a intersect b
    val all = a union b
    val hasExtra = a.contains(extra)

    println("unionSize=" + all.size)
    println("shared=" + both.toList.sorted.mkString(","))
    println("hasExtra=" + hasExtra)
  }
}
object Main {
  def main(args: Array[String]): Unit = {
    val extra = 2
    val a = Set(1, 2, 3)
    val b = Set(3, 4, 5)
    val both = a intersect b
    val all = a union b
    val hasExtra = a.contains(extra)

    println("unionSize=" + all.size)
    println("shared=" + both.toList.sorted.mkString(","))
    println("hasExtra=" + hasExtra)
  }
}
object Main {
  def main(args: Array[String]): Unit = {
    val extra = 9
    val a = Set(1, 2, 3)
    val b = Set(3, 4, 5)
    val both = a intersect b
    val all = a union b
    val hasExtra = a.contains(extra)

    println("unionSize=" + all.size)
    println("shared=" + both.toList.sorted.mkString(","))
    println("hasExtra=" + hasExtra)
  }
}
  1. extra ← 4, a ← Set(1, 2, 3), b ← Set(3, 4, 5), both ← Set(3), all ← HashSet(5, 1, 2, 3, 4)

    1object Main {2  def main(args: Array[String]): Unit = {3    val extra→ 4 = 4 //@extra=2, 94    val a→ Set(1, 2, 3) = Set(1, 2, 3)5    val b→ Set(3, 4, 5) = Set(3, 4, 5)6    val both→ Set(3) = aSet(1, 2, 3) intersect bSet(3, 4, 5)7    val all→ HashSet(5, 1, 2, 3, 4) = aSet(1, 2, 3) union bSet(3, 4, 5)8    val hasExtra→ false = aSet(1, 2, 3).contains(extra4)910    println("unionSize=" + all.size5)11    println("shared=" + both.toListList(3).sorted.mkString(","))12    println("hasExtra=" + hasExtrafalse)13  }14}
    outputunionSize=5
    shared=3
    hasExtra=false
  1. extra ← 2, a ← Set(1, 2, 3), b ← Set(3, 4, 5), both ← Set(3), all ← HashSet(5, 1, 2, 3, 4)

    1object Main {2  def main(args: Array[String]): Unit = {3    val extra→ 2 = 24    val a→ Set(1, 2, 3) = Set(1, 2, 3)5    val b→ Set(3, 4, 5) = Set(3, 4, 5)6    val both→ Set(3) = aSet(1, 2, 3) intersect bSet(3, 4, 5)7    val all→ HashSet(5, 1, 2, 3, 4) = aSet(1, 2, 3) union bSet(3, 4, 5)8    val hasExtra→ true = aSet(1, 2, 3).contains(extra2)910    println("unionSize=" + all.size5)11    println("shared=" + both.toListList(3).sorted.mkString(","))12    println("hasExtra=" + hasExtratrue)13  }14}
    outputunionSize=5
    shared=3
    hasExtra=true
  1. extra ← 9, a ← Set(1, 2, 3), b ← Set(3, 4, 5), both ← Set(3), all ← HashSet(5, 1, 2, 3, 4)

    1object Main {2  def main(args: Array[String]): Unit = {3    val extra→ 9 = 94    val a→ Set(1, 2, 3) = Set(1, 2, 3)5    val b→ Set(3, 4, 5) = Set(3, 4, 5)6    val both→ Set(3) = aSet(1, 2, 3) intersect bSet(3, 4, 5)7    val all→ HashSet(5, 1, 2, 3, 4) = aSet(1, 2, 3) union bSet(3, 4, 5)8    val hasExtra→ false = aSet(1, 2, 3).contains(extra9)910    println("unionSize=" + all.size5)11    println("shared=" + both.toListList(3).sorted.mkString(","))12    println("hasExtra=" + hasExtrafalse)13  }14}
    outputunionSize=5
    shared=3
    hasExtra=false