61.scala编程思想笔记——集

144 阅读1分钟

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方法用来将容器的容器中所有事物展开为单个层次的序列。