Maps, Sets, and Grouping
Set Operations
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
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)
}
}
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
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
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