1.初始化一个Set
//创建一个空的
var emptySet = Set<Character>() //[]
//明确指明创建的类型
var set1 : Set<Character> = ["a","e","i","o","u"] //{"e", "a", "i", "o", "u"}
//非明确的指明Set中元素的类型
var set2 :Set = [0,1,2,3,4,5] //{4, 5, 2, 0, 1, 3}
set2.dynamicType //Set<Int>.Type
2.Set判空
emptySet.isEmpty
emptySet.count == 0
3.Set的增删
//set中的元素必须实现Hashable接口
//set插入一个元素
emptySet.insert("a")
//set删除一个元素
set1.remove("a")
//set删除所有元素
set1.removeAll()
4.Set的遍历
//set的遍历
for num in set2{
print(num)
}
//有顺序的遍历
for num in set2.sort(){
print(num)
}
5.集合的相关运算
(1) 求并集
var set3 : Set = [0,1,2,3,4]
var set4 : Set = [3,4,5,6,7]
//求并集
set3.union(set4) //{2, 4, 5, 6, 7, 0, 1, 3}
(2)求交集
//求交集
var set7 : Set = [0,1,2,3,4]
var set8 : Set = [3,4,5,6,7]
set7.intersect(set8) //{4, 3}
(3)求差集
/求差集,即前一个集合减去同时存在两个集合的元素
var set9 : Set = [0,1,2,3,4]
var set10 : Set = [3,4,5,6,7]
set9.subtract(set10) //{2, 0, 1}
(4)求对称差集
var set5 : Set = [0,1,2,3,4]
var set6 : Set = [3,4,5,6,7]
//求对称差集合,即去掉两个集合相同的,不相同的组合成为一个新的集合
set5.exclusiveOr(set6) //{2, 5, 6, 7, 0, 1}
(5)InPlace
/* 下面这些操作都是会将返回值赋给调用者
* 而上面的那些没有InPlace的方法不会
*set.unionInPlace(newSet)
*set.exclusiveOrPlace(newSet)
*set.intersectPlace(newSet)
*set.subtractInPlace(newSet)
*/
6.Set的相关判断
(1)判断是否是子集
var set11 : Set = [0,1,2,3,4]
var set12 : Set = [0,1,2]
var set13 : Set = [0,1,2]
var set14 : Set = [11,12,13]
//判断第一个集合是否是第二个集合的子集
//包含相同的情况
set12.isSubsetOf(set11) //true
set12.isSubsetOf(set13) //true
//不包含相同的情况
set12.isStrictSubsetOf(set11) //true
set12.isStrictSubsetOf(set13) //false
(2)判断是否是超集
var set11 : Set = [0,1,2,3,4]
var set12 : Set = [0,1,2]
var set13 : Set = [0,1,2]
var set14 : Set = [11,12,13]
//判断第一个集合是否是第二个集合的超集
//包含相同的情况
set11.isSupersetOf(set12) //true
set11.isSupersetOf(set12) //true
//不包含相同的情况
set11.isStrictSupersetOf(set12) //true
set12.isStrictSupersetOf(set13) //false
(3)判断是否完全没有关系
var set11 : Set = [0,1,2,3,4]
var set12 : Set = [0,1,2]
var set13 : Set = [0,1,2]
var set14 : Set = [11,12,13]
//判断两个集合完全没有关系
set11.isDisjointWith(set12) //false
set11.isDisjointWith(set14) //true
7.Dictionary的初始化
var dic1 :Dictionary<Int,String> = [Int: String]()
var dic2 = [Int :String]()
var dic3 = [1:"一",2:"二",3:"三",4:"四"]
8.Dictionary的增删改
dic3[5] = "五" //"五"
dic3 //[5: "五", 2: "二", 3: "三", 1: "一", 4: "四"]
dic3.updateValue("5", forKey: 5) //"五"
dic3 //[5: "5", 2: "二", 3: "三", 1: "一", 4: "四"]
dic3[1] = "1111" //"1111"
dic3 //[5: "5", 2: "二", 3: "三", 1: "1111", 4: "四"]
dic3[1] = nil //nil
dic3 //[5: "5", 2: "二", 3: "三", 4: "四"]
let optionValue1 = dic3[2] //"二"
optionValue1.dynamicType //取出的是option类型,Optional<String>.Type
var optionnalValue2 = dic3.removeValueForKey(2) //"二"
optionnalValue2.dynamicType //取出的是option类型,Optional<String>.Type
dic3 //[5: "5", 3: "三", 4: "四"]
dic3.removeAtIndex(dic3.indexForKey(3)!) (.0 3, .1 "三")
dic3 //[5: "5", 4: "四"]
9.Dictionary遍历
for (key,value) in dic3{
print("\(key) : \(value)")
}
10.获取所有的key或者value(以key为例)
//获取所有的key
dic3.keys.dynamicType //LazyMapCollection<Dictionary<Int, String>, Int>.Type
let keysArray = [Int](dic3.keys) //[5, 4]
网友评论