//创建集合
//通过构造器语法创建一个特定类型的空集合;
var set = Set<String>()
println("set have \(set.count)")
set.insert("name")
//现在含有1个string类型的值
set = []
//set现在是一个空的Set, 但是它依然是 Set<string> 类型
var setStringSet: Set<String> = ["1", "2", "3"]
// setStringSet被构造成含有三个初始值string类型的集合
//一个Set类型不能从数组中字面量中独立地被推断出来,因此Set类型必须显式声明。然而,由于Swift的类型推导功能,如果你想使用一个数组字面量构造一个Set并且该数组字面量中的所有元素类型相同,那么你无须写出Set的具体类型。favoriteGenres的构造形式可以采用简化的方式代替
// 访问和修改一个Set
//使用布尔属性isEmpty作为一个缩写形式去检查count属性是否为0:
if setStringSet.isEmpty {
println("set为空")
} else {
println("set不为空")
}
//你可以通过调用Set的insert(_:)方法来添加一个新元素:
setStringSet.insert("Jazz")
//通过调用Set的remove(_:)方法去删除一个元素,如果该值是该Set的一个元素则删除该元素并且返回被删除的元素值,否认如果该Set不包含该值,则返回nil。另外,Set中的所有元素可以通过它的removeAll()方法删除。
if let removedSet = setStringSet.remove("Rock") {
println("\(removedSet)")
} else {
println("much")
}
//使用contains(_:)方法去检查Set中是否包含一个特定的值。
if setStringSet.contains("1") {
print("不在set内")
} else {
print("in here.")
}
//for-in循环中遍历一个Set中的所有值。
for setstringSet in setStringSet {
print("1-\(setstringSet)")
}
// 完成集合操作
//
// 你可以高效的完成Set的一些基本操作,比如把两个集合组合到一起,判断两个集合共有元素,或者判断两个集合是否全包含,部分包含或者不相交。
//
//
// 基本集合操作
//
// 下面的插图描述了两个集合-a和b-以及通过阴影部分的区域显示集合各种操作的结果。
//
//
//
// 使用intersect(_:)方法根据两个集合中都包含的值创建的一个新的集合。
// 使用exclusiveOr(_:)方法根据值在一个集合中但不在两个集合中的值创建一个新的集合。
// 使用union(_:)方法根据两个集合的值创建一个新的集合。
// 使用subtract(_:)方法根据不在该集合中的值创建一个新的集合。
let oddDigits: Set = [1, 3, 5, 7, 9]
let evenDigits: Set = [0, 2, 4, 6, 8]
let singleDigitPrimeNumbers: Set = [2, 3, 5, 7]
oddDigits.union(evenDigits).sort()
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
oddDigits.intersect(evenDigits).sort()
// []
oddDigits.subtract(singleDigitPrimeNumbers).sort()
// [1, 9]
oddDigits.exclusiveOr(singleDigitPrimeNumbers).sort()
// [1, 2, 9]
// 集合成员关系和相等
//
// 下面的插图描述了三个集合-a,b和c,以及通过悬浮区域表述集合间共享的元素。Set a是Setb的父集合,因为a包含了b中所有的元素,相反的,Set b是a的子集合,因为属于b的元素也被a包含。Set b和Set c彼此不关联,因为它们之间没有共同的元素。
// 使用“是否等”运算符(==)来判断两个集合是否包含全部相同的值。
// 使用isSubsetOf(_:)方法来判断一个集合中的值是否也被包含在另外一个集合中。
// 使用isSupersetOf(_:)方法来判断一个集合中包含的值是另一个集合中所有的值。
// 使用isStrictSubsetOf(_:)或者isStrictSupersetOf(_:)方法来判断一个集合是否是另外一个集合的子集合或者父集合并且和特定集合不相等。
// 使用isDisjointWith(_:)方法来判断两个结合是否不含有相同的值。
let houseAnimals: Set = ["