集合
-
集合种类
- Arrays:是一个有序的数据集合
- Sets: 是一个无序无重复收据的数据集合
- Dictionaries: 是无序的键值对
-
优化
如果我们确定集合是不可变的,那我们用let定义为常量,这时候编译器会对代码进行优化的。也是我们推荐的。
Array
- 清空数组
var a = [Int]()
a = []
print(a)
- 数组的创建
//1. 利用Array类创建重复元素数组 (如果一个数组中都是重复元素推荐用这种方法,更方便)
var a = Array(repeating: "3.1415926", count: 10)
print("a = \(a)")
//2. 通过相加创建数组 (要考虑数组中存储的类型是否一致,是否可以直接加)
var b = ["1","2"]
var b1 = Array(repeating: "3", count: 3)
var c = a + b + b1
print("c = \(c)")
- 数组中元素个数
var a = Array(repeating: 3, count: 3)
print(a.count)
- 判断是否是空
var a = Array(repeating: 3, count: 3)
print(a.isEmpty)
- 向后添加值
var a = Array(repeating: 3, count: 3)
a.append(5)
- 改变范围内数组中元素值
//改变范围内数组元素值
var a = [1,2,4,5,6]
a[2...] = [3,4,5]
print(a)
7.插值移除遍历
//插值
var b = [1,2,3,4,6]
b.insert(5, at: 4)
print(b)
//移除
b.remove(at: 4)
b.removeLast()
print(b)
//遍历
for value in b {
print(value)
}
for (index,value) in b.enumerated() {
print("index = \(index), value = \(value)")
}
- 和字串相关操作比较
1. 统计个数函数一样, count
2. 追加字符和追加元素函数一样, append()
3. 都可以直接用加法, +
4. 插值函数一样, insert()
Set
- 集合用来存储无序,并且不能重复,并且是同种类型的元素
- 集合的创建
// 1. 创建一个空集合
var a: Set<String> = []
var b = Set<String>()
//2. 创建一个有默认值的集合
var c: Set<String> = ["3","2"]
var d: Set = [2,3,5]
- 集合简单操作
var a: Set = ["1","2","3"]
//1. 集合中元素的个数
print(a.count)
//2. 判断是否为空
print(a.isEmpty)
//3. 插入值(这里不能用append,append代表有序)
a.insert("4")
//4. 移除值
a.remove("4")
//5. 是否包含某个元素
a.contains("4")
//遍历集合
for item in a {
print(item,terminator:" ")
}
print(terminator:"\n")
for item in a.sorted() {
print("\(item)",terminator:" ")
}
- 集合运算与判断
// 集合运算
let oddDigits: Set = [1, 3, 5, 7, 9]
let evenDigits: Set = [0, 2, 4, 6, 8]
let singleDigitPrimeNumbers: Set = [2, 3, 5, 7]
oddDigits.union(evenDigits).sorted()
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
oddDigits.intersection(evenDigits).sorted()
// []
oddDigits.subtracting(singleDigitPrimeNumbers).sorted()
// [1, 9]
oddDigits.symmetricDifference(singleDigitPrimeNumbers).sorted()
// [1, 2, 9]
//集合判断
let houseAnimals: Set = ["?", "?"]
let farmAnimals: Set = ["?", "?", "?", "?", "?"]
let cityAnimals: Set = ["?", "?"]
houseAnimals.isSubset(of: farmAnimals)
// true
farmAnimals.isSuperset(of: houseAnimals)
// true
farmAnimals.isDisjoint(with: cityAnimals)
// true
Dictionary
- 操作
var a = ["one":1, "two":2, "three":3, "four":4]
//1. 个数
print("count = \(a.count)")
//2. 是否是空
print("isEmpty = \(a.isEmpty)")
//3. 更新值 (存在就会返回旧值,并更新值。不存在就返回nil,并插入新值
print(a.updateValue(10, forKey: "one") ?? 0)
print(a)
//不存在就会返回新值
print(a.updateValue(999, forKey: "999") ?? 999)
//4. 移除(存在就移除值,并返回被移除的那个值,不存在就返回nil)
print(a.removeValue(forKey: "one") ?? 0)
- 遍历
var a = ["1":1, "2":2, "3":3]
//1. 遍历获取key,value
for (key,value) in a {
print("key = \(key)---value = \(value)")
}
//2. 只是遍历key
for key in a.keys {
print(key)
}
//3. 只是遍历value
for value in a.values {
print(value)
}
//4. 获取keys,values
var b = [String](a.keys)
var c = [Int](a.values)