61.scala编程思想笔记——集
欢迎转载,转载请标明出处:blog.csdn.net/notbaron/ar…
源码下载连接请见第一篇笔记。
Set集可以确保对于每个值都只包含一个元素,因此会自动移除重复元素。Set的最常见用法是使用()操作符测试某个值是否是其元素。
例如:
import com.atomicscala.AtomicTest._
val set =
Set(1, 1, 2,3, 9, 9, 4, 22, 11, 7, 6)
// No duplicates:
set is Set(1, 6, 9, 2, 22, 7, 3, 11, 4)
// Set membership:
set(9) is true
set(99) is false
// Is this set contained within another?
Set(1, 6, 9, 2).subsetOf(set) is true
// Two different versions of set union:
set.union(Set(2, 3, 4, 99)) is
Set(1, 6, 9,2, 22, 7, 3, 11, 99, 4)
set | Set(2, 3, 4, 99) is
Set(1, 6, 9,2, 22, 7, 3, 11, 99, 4)
// Set intersection:
set & Set(0,1,11,22,87) is Set(1,22,11)
set intersect Set(0,1,11,22,87) is
Set(1,22,11)
// Set difference:
set &~ Set(0, 1, 11, 22, 87) is
Set(6, 9, 2,7, 3, 4)
set -- Set(0, 1, 11, 22, 87) is
Set(6, 9, 2,7, 3, 4)
如果有某种序列,并且想移除其中的重复元素,那么可以使用toSet将其转换为Set:
如下:
import com.atomicscala.AtomicTest._
val ch = for(i <- 0 to 2) yield 'a' to 'd'
ch is "Vector(NumericRange(a, b, c, d), " +
"NumericRange(a, b, c, d), " +
"NumericRange(a, b, c, d))"
ch.flatten is "Vector(a, b, c, d, " +
"a, b,c, d, a, b, c, d)"
ch.flatten.toSet is "Set(a, b, c, d)"
其中flatten方法用来将容器的容器中所有事物展开为单个层次的序列。