//: Playground - noun: a place where people can play

import UIKit

// 集合


// Swift中的Set类型被写为Set<SomeType>,这里的SomeType表示Set中允许存储的类型,和数组不同的是,集合没有等价的简化形式

var letters = Set<Character>()

letters
// letters现在含有1个Character类型的值
letters.insert("a")
letters
// letters现在是一个空的Set, 但是它依然是Set<Character>类型
letters = []

// 下面的例子创建一个称之为favoriteGenres的集合来存储String类型的值
var favoriteGenres:Set<String> = ["Enda","Yuan","H"]

// 可以简写为
var endaName:Set = ["Enda","H","Y"]

// 查数量
endaName.count

// 判断是否为空

if endaName.isEmpty {
    println("为空")
}else{
    println("不为空")
}

// Set的insert(_:)方法添加一个新的元素
endaName.insert("Y")


// 你可以通过调用Set的remove(_:)方法去删除一个元素,如果该值是该Set的一个元素则删除该元素并且返回被删除的元素值,否认如果该Set不包含该值,则返回nil。另外,Set中的所有元素可以通过它的removeAll()方法删除

if var removeName = endaName.remove("Y"){
    println("删除 \(removeName) 成功")
}else{
    println("删除失败")
}

// 删除所有
endaName.removeAll()

var tempName:Set = ["E","N","D","A"];

// 使用contains(_:)方法去检查Set中是否包含一个特定的值

if tempName.contains("E"){
    println("包含 e")
}else{
    println("不包含")
}


// 遍历一个 Set
// 你可以在一个for-in循环中遍历一个Set中的所有值

for temp in tempName{
    println(temp);
}



//Swift的Set类型没有确定的顺序,为了按照特定顺序来遍历一个Set中值可以使用全局sorted函数,它将根据提供的序列返回一个排序的集合.

for temp in sorted(tempName){
    println(temp);
}



// 完成集合操作

let oddDigits:Set=[1,3,5,7,9];
let evenDigits:Set=[0,1,2,4,6,8]
let singleDigits:Set = [2,3,5,7];

// 使用union(_:)方法根据两个集合的值创建一个新的集合
sorted(oddDigits.union(evenDigits));

// 使用subtract(_:)方法根据不在该集合中的值创建一个新的集合
sorted(oddDigits.subtract(singleDigits));

//使用intersect(_:)方法根据两个集合中都包含的值创建的一个新的集合
sorted(oddDigits.intersect(evenDigits));


// 使用exclusiveOr(_:)方法根据值在一个集合中但不在两个集合中的值创建一个新的集合
sorted(oddDigits.exclusiveOr(singleDigits))



// 集合比较

// 使用“是否等”运算符(==)来判断两个集合是否包含相同的值。

var set1:Set = [1,2];
var set2:Set = [1,2];
var set3:Set = [2,1]
if set1 == set2{
    println("包含同样的值");
}

// 使用isSubsetOf(_:)方法来判断一个集合中的值是否也被包含在另外一个集合中
set1.isSubsetOf(set3);


// 使用isSupersetOf(_:)方法来判断一个集合中包含的值是另一个集合中所有的值
set2.isSupersetOf(set1)


// 使用isStrictSubsetOf(_:)或者isStrictSupersetOf(_:)方法来判断一个集合是否是另外一个集合的子集合或者父集合并且和特定集合不相等
var set4:Set=[1,2,3,4,5,6];
var set5:Set=[7,8];

set4.isDisjointWith(set5)


enda
1k 声望84 粉丝