Swift 集合类型

集合类型
一组同类型的值得组合,根据组合的整体特性分为:
有序可重复:数组(Array)
无序不重复:Set
无序可重复,但每个值有唯一的键(key):字典(Dictionary)
批量处理集合中的元素,可以使用for in 循环

// 数组
有序可重复,用于存储同一类型的值
定义:Array<类型> 或者[类型]


// 创建一个有默认值的数组
let array : [Int]
array = [Int](repeatElement(3, count: 10))
// 创建一个有序范围的Int数组,Array(起始值...终止值)
let array2 = Array(1...10)
// 用数组字面量来创建数组:[值1,值2,值3,...,值N]
var places = ["guangzhou","shanghai","chongqin","hainan"]

// 元素计数:count 空否:isEmpty
places.count
places.isEmpty
// +添加:append 添加一个同类型的数组 +=
places.append("wuhan")

let haiwaiplace = ["NewYork","London","Sao paolu"]
places += haiwaiplace
// 获取元素:数组名[索引],索引总是从0开始
places[7]

// 插入:insert
places.insert("Paris", at: 5)

// 移除:remove
places.remove(at: 6)

places

for str in places {
    print(str)
}

集合(Set):值无序不重复,适合存储具有唯一性的数据,如用户名/身份证/身份证号码/护照号等

// 定义:Set<元素类型>,无法使用类型推断,但可省略类型
let set : Set = [1,2,3]
let cardno : Set = [1,2,4,3,1,5]

// 用数组字面量创建集合
var citys : Set = ["shanghai","shenzhen","guangzhou","beijing"]

// 元素计数:count 空否:isEmpty
citys.count
citys.isEmpty
// 插入:insert
citys.insert("chengdu")
// 移除:remove
citys.remove("shanghai")
// 是否包含某元素:contains
citys.contains("beijing")
// 转换成数组:sorted
let cityArray = citys.sorted();

// 集合间的运算
var x:Set = [1,2,3,4]
var y:Set = [4,3,5,6]
// 交集:intersection
x.intersection(y)
x
// 差集:subtract 改变x
// x.subtract(y)

// 并集:union 改变x
// x.union(y)

// 补集:symmetricDifference
x.symmetricDifference(y)

// 集合的关系
// 相等:两个集合有完全相同的元素
let h : Set = [1,2,3]
let i : Set = [3,1,2]
let j : Set = [2]
h == i

// 子集:isSubset(可以相等),严格子集isStrictSubset(不可以相等)
h.isSubset(of: i)
h.isStrictSubset(of: i)
j.isSubset(of: h)
j.isStrictSubset(of: h)

// 父集:isSupersetOf(可以相等),严格父集isStrictSuperSetOf(不可以相等)
i.isSuperset(of: h)
i.isStrictSuperset(of: h)
i.isStrictSuperset(of: j)

// 无交集:isDisjoint
let m : Set = ["游戏","动漫"]
let n : Set = ["购物","小吃","化妆"]
m.isDisjoint(with: n)

字典:值无序可重复,但每个值有唯一的键(key)

// 定义:Dictionary <键类型,值类型>,或[键类型:值类型]
var a:Dictionary
var b:[String:String]

// 用字典字面量来创建字典,键与值之间用冒号隔开
var airports = ["PVG":"Shanghai Pudong","CHU":"Dalian","DUB":"Dublin Airport"]

// 计数:count 空否:isEmpty
airports.count
airports.isEmpty
airports

// 添加或更新:字典变量[键] = 值
airports["SHQ"] = "Hongqiao Airport"
airports["CHU"] = "大连周水子机场"
airports

// 获取,Key
airports["DUD"]
airports["CHU"]

// 移除 用key把值设为nil
airports["CHU"] = nil
airports

// 循环一个字典 for in 因为键值对有2个元素,用元祖变量
for (key,value) in airports {
    print(key,value)
    
}

// 单独使用其中键或值,使用keys或values(可使用 for in)
for key in airports.keys{
    print(key)
}

// 把键值对分离成数组,用[数组类型](字典变量.keys),[数组类型](字典变量.values)
let codes = [String](airports.keys)
let airportFullname = [String](airports.values)

你可能感兴趣的:(Swift 集合类型)