4.集合类型
集合类型:Swift 语?提供数组(Array)、集合(Set)和字典(Dictionary)三种基本的集合类型?用来存
储集合数据。数组是有序数据的集。集合是?序?重复数据的集。字典是?序的键值对的集合。Swift 的数组、集合和字典类型被实现为泛型集合。-
数组Array:数组使?有序列表存储同一类型的多个值。相同的值可以多次出现在一个数组的不同位置中。
语法:Swift 中数组的完整写法为 Array<Element> ,其中 Element 是这个数组中唯一允许存在的 数据类型。也可以使?用像 [Element] 这样的简单语法。 1.创建?个空数组 var someInts = [Int]() 2.创建一个带有默认值的数组 var threeDoubles = Array(repeating: 0.0, count: 3) // threeDoubles 是?一种 [Double] 数组,等价于 [0.0, 0.0, 0.0] 3.通过两个数组相加创建一个数组 var anotherThreeDoubles = Array(repeating: 2.5, count: 3) // anotherThreeDoubles 被推断为 [Double],等价于 [2.5, 2.5, 2.5] var sixDoubles = threeDoubles + anotherThreeDoubles // sixDoubles 被推断为 [Double],等价于 [0.0, 0.0, 0.0, 2.5, 2.5, 2.5] 4.?用数组字?面量量构造数组 var shoppingList: [String] = ["Eggs", "Milk"] //shoppingList已经被构造并且拥有两个初始项。 访问和修改数组 1.使用数组的只读属性 count 来获取数组中的数据项数量 print("The shopping list contains \(shoppingList.count) items.") // 输出“The shopping list contains 2 items.”(这个数组有2个项) 2.使用布尔属性 isEmpty 作为一个缩写形式去检查 count 属性是否为 0 if shoppingList.isEmpty { print("The shopping list is empty.") } else { print("The shopping list is not empty.") } // 打印“The shopping list is not empty.”(shoppinglist 不不是空的) 3.使用 append(_:) ?方法在数组后面添加新的数据项;通过调用数组的 insert(_:at:) ?法在某个指定索引值添加数据项;使?用 remove(at:) 方法来移除数组中的某?一项 4.数组遍历: -使?用 for-in 循环来遍历数组中所有的数据项 for item in shoppingList { print(item) } -如果同时需要每个数据项的值和索引值,可以使用 enumerated() ?法来进行数组遍历,索引值从零开始 for (index, value) in shoppingList.enumerated() { print("Item \(String(index + 1)): \(value)") }
-
集合Set:集合用来存储相同类型并且没有确定顺序的值。当集合元素顺序不重要时或者希望确保每个元
素只出现一次时可以使用集合?不是数组。
语法:Swift 中的集合类型被写为 Set<Element> ,这里的 Element 表示集合中允许存储的类型。 和数组不不同的是,集合没有等价的简化形式。 1.创建和构造?一个空的集合 var letters = Set<Character>() print("letters is of type Set<Character> with \(letters.count) items.") // 打印“letters is of type Set<Character> with 0 items.” 2.?用数组字?面量量创建集合 var favoriteGenres: Set<String> = ["Rock", "Classical", "Hip hop"] // favoriteGenres 被构造成含有三个初始值的集合,此处可以省略 <String> 访问和修改一个集合 1.为了获取一个集合中元素的数量,可以使?其只读属性 count ;使用布尔属性 isEmpty 作为一个缩写形式去检查 count 属性是否为 0 ; 2.通过调用集合的 insert(_:) ?方法来添加?一个新元素;通过调?用集合的 remove(_:) ?方法去删除?一个元素,如果它是该集合的一个元素则删除 它并且返回它的值,若该集合不不包含它,则返回 nil 。另外,集合可以通过 removeAll() ?方法删除所有元素。 3.使用contains(_:) ?方法去检查集合中是否包含一个特定的值 集合操作: 1.使? intersection(_:) ?方法根据两个集合的交集创建?一个新的集合。 2.使? symmetricDifference(_:) ?方法根据两个集合不不相交的值创建?一个新的集合。 3.使? union(_:) ?方法根据两个集合的所有值创建?一个新的集合。 4.使? subtracting(_:) ?方法根据不不在另?一个集合中的值创建?一个新的集合。 集合成员关系和相等 1.使用“是否相等”运算符( == )来判断两个集合包含的值是否全部相同。 2.使用 isSubset(of:) ?方法来判断一个集合中的所有值是否也被包含在另外一个集合中。 3.使用 isSuperset(of:) ?方法来判断一个集合是否包含另一个集合中所有的值。 4.使用 isStrictSubset(of:) 或者 isStrictSuperset(of:) ?方法来判断一个集合是否 是另外一个集合的子集合或者父集合并且两个集合并不相等。 5.使?用 isDisjoint(with:) ?方法来判断两个集合是否不含有相同的值(是否没有交集)。
-
字典Dictionary:是一种无序的集合,它存储的是键值对之间的关系,其所有键的值需要是相同的类型,所
有值的类型也需要相同。语法:Swift 的字典使用 Dictionary<Key, Value> 定义,你也可以用 [Key: Value] 这样简化的形式去表示字典类型 1.创建一个空字典 var namesOfIntegers = [Int: String]() // namesOfIntegers 是?一个空的 [Int: String] 字典 2.用字典字?量创建字典 var airports: [String: String] = ["YYZ": "Toronto Pearson", "DUB": "Dublin"] //和数组?一样,你在?用字典字?面量量构造字典时,如果它的键和值都有各?自?一致的类型,那么就不 //必写出字典的类型。var airports = ["YYZ": "Toronto Pearson", "DUB": "Dublin"] 访问和修改字典 1.通过 Dictionary 的只读属性 count 来获取字典的数据项数量;使?用布尔属性 isEmpty 作为?一个缩写形式去检查 count 属性是否为 0 ; 2.字典的 updateValue(_:forKey:) ?方法可以设置或者更更新特定键对应的值,返回更更新值之前的原值 3.使?下标语法通过将某个键的对应值赋值为 nil 来从字典里移除一个键值对。removeValue(forKey:) ?方法也可以用来在字典中移除键值对,这个方法在键值对存在 的情况下会移除该键值对并且返回被移除的值或者在没有对应值的情况下返回 nil 字典遍历 1.使?用 for-in 循环来遍历某个字典中的键值对。每?一个字典中的数据项都以 (key, value) 元组形式返回 for (airportCode, airportName) in airports { print("\(airportCode): \(airportName)") } 2.如果你需要使?用某个字典的键集合或者值集合来作为某个接受 Array 实例例的 API 的参数,可 以直接使?用 keys 或者 values 属性构造一个新数组 let airportCodes = [String](airports.keys) let airportNames = [String](airports.values)