美文网首页
(八) [Swift]Swift中的无序集合

(八) [Swift]Swift中的无序集合

作者: 修行猿 | 来源:发表于2016-08-04 21:59 被阅读30次

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]

相关文章

网友评论

      本文标题:(八) [Swift]Swift中的无序集合

      本文链接:https://www.haomeiwen.com/subject/ygqhsttx.html