Swift学习笔记04:集合类型

概述

Swift 提供了数组、集合和字典来存储一组值。如果将集合赋给变量,则该集合是可变的,可以添加、移除或改变元素;如果将集合赋给常量,则该集合是不可变的。

数组

数组以有序的方式储存相同类型的值,它的类型可以写作Array<Element>[Element],其中Element是数组中元素的类型。

创建一个空数组:

var someInts = [Int]()

使用默认值创建数组:

var threeDoubles = Array(repeating: 0.0, count: 3)

使用字面量创建数组:

var shoppingList = ["Eggs", "Milk"]

count属性可以获取数组中元素的数量,isEmpty属性可以检查数组是否为空:

shoppingList.count	// 2
shoppingList.isEmpty	// false

append()方法可以在数组末尾添加新元素:

shoppingList.append("Apples")

+可以连接两个数组,+=可以在数组末尾添加一个或多个元素:

shoppingList += ["Cheese", "Oranges"]

0开始的下标可以访问或修改元素:

var firstItem = shoppingList[0]	// Eggs
shoppingList[2] = "Pears"

改变一个范围的值,如果要修改的元素数量和新的元素数量不一致,数组的长度也会变化:

var arr = [1, 2, 3, 4, 5, 6]
arr[2...4] = [7, 8]		// [1, 2, 7, 8, 6]

insert()插入元素,remove()移除元素,removeLast()移除最后一个元素:

arr.insert(7, at: arr.count)
arr.remove(at: arr.count)
arr.removeLast()

使用for遍历数组中的元素,使用enumerated()遍历数组的索引和值:

for (index, value) in shoppingList.enumerated() {
    print("Item \(index + 1): \(value)")
}

集合

集合以无序的方式存储相同类型的不可重复的值,它的类型可以写作Set<Element>

创建一个空集合:

var letters = Set<Character>()

使用字面量创建集合,数据类型必须显式给出,否则会被推断为数组:

var genres: Set = ["Rock", "Classical", "Hip hop"]

count属性可以获取集合内元素的数量,isEmpty属性可以检查集合是否为空:

genres.count	// 3
genres.isEmpty	// false

insert()方法添加新元素到集合:

genres.insert("Jazz")

remove()方法移除集合中的一个元素并返回它的值,如果元素不存在就返回nil

genres.remove("Jazz")

removeAll()方法移除集合中的所有元素:

genres.removeAll()

contains()方法检查集合中是否存在某个元素:

genres.contains("Funk")		// false

集合可以用for遍历,如果希望以特定顺序遍历需要使用sorted()方法将其排序并转换为数组:

for g in genres.sorted() {
    print("\(g)")
}

对于两个集合,常用操作包括:

  • 取交集:a.intersection(b)
  • 取只属于ab的集合:a.symmetricDifference(b)
  • 取并集:a.union(b)
  • 取差集:a.subtracting(b)
  • 判断两个集合是否有相同的元素:a == b
  • 判断a是否是b的子集:a.isSubset(of: b)
  • 判断a是否是b的超集:a.isSuperset(of: b)
  • 判断a是否是b的真子集:a.isStrictSubset(of: b)
  • 判断a是否是b的真超集:a.isStrictSuperset(of: b)
  • 判断ab是否拥有完全不同的值:a.isDisjoint(with: b)

字典

字典以无序方式存储一组键值对,其中所有的键必须是同一类型,所有的值也必须是同一类型,它的类型写作Dictionary<Key, Value>[Key: Value]

创建一个空字典:

var namesOfIntegers = [Int: String]()

用字面量创建字典:

var airports = ["YYZ", "Toronto", "DUB": "Dublin"]

count属性可以获取字典中键值对的数量,isEmpty属性可以检查字典是否为空:

airports.count		// 2
airports.isEmpty	// false

根据键来访问、添加或获取元素(如果元素不存在就返回nil),或者使用updateValue()方法:

airports["LHR"] = "London"
airports.updateValue("London", forKey: "LHR")

removeValue()方法可以移除一个键值对并返回值,赋一个nil也可以达到同样的效果:

airports.removeValue("LHR")
airports["LHR"] = nil

使用for遍历字典中的键值对,使用键或值的sorted()方法可以按特定顺序访问:

for (code, name) in airports {
    print("\(code): \(name)")
}

如果只需要访问键或值的集合,使用keysvalues属性:

for code in airports.keys {
    print("\(code)")
}

for name in airports.values {
    print("\(name)")
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值