Set声明
Set是一种特殊的无序集合类型,这是一个简单的Set集合:
var setDemo:Set<String> = [“1”,”2”,”3″]
setDemo是一个Set<String>类型的集合,集合中只能出现String类型的数据,如果放入了其他类型,会引发异常!
但是如果没有指定集合中的数据类型,那就没有关系。
var setDemo:Set = [“1”,”2”,”3”,4,5,6,7]
此时setDemo中包含了Int和String,这样是没有问题的。
总之,如果手动指定了Set的数据类型,那么就必须按照这个类型进行存放,否则会报错;如果没有指定类型,那都可以。
Set集合另外一个特性就是处理相同值的方法,当一个Set中出现了相同值,不会抛出异常,会自动忽略其他的,只使用一个。
var setDemo:Set = [1,2,3,4,5,1]
此时setDemo的长度还是5,虽然出现了2个相同的值,但只取一个,看上去数量是6,实际在运行时内部忽略了多余的了。
Set循环
Set集合的循环和Array一样,可以使用for-in,需要注意的是,Set是一个无序的集合,所以每次运行,输出的值的顺序是不一样的!
如果要对Set中的内容进行排序,可以在for循环中使用swift的sorted函数:
for value in sorted(setDemo){
println(value)
}
请注意,使用sorted对set排序,需要保证集合中的数据的类型必须是一样,否则会报错!
Set之间的交并集
set集合提供4种处理集合之间数据交集与并集的函数:
intersect:返回两个集合中都存在的数据
exclusiveror:返回两个集合各自特有的数据,忽略两个集合中都有的数据
union:返回两个集合中所有数据
subtract:返回不包含右边集合的所有数据
4个方法都把合适数据组织成一个新的集合进行返回。
Set的比较
1)使用(==)来判断2个集合中的值是否完全一样
2)isSubsetof,判断一个集合中的值是否被包含在另个集合中
3)isSupersetof,判断一个集合的所有值是否包含在另个集合中
4)isStrictSubsetof或者isStrictSupersetof,判断一个集合是否是另一个集合的子集,或者,父集合并且和特定集合不相等(不是很理解的感觉!)
5)isDisjointwith,判断是否不含相同的值