Swift学习笔记 - 集合类型

Swift三种主要的集合类型:Array、Set、Dictionary

一、数组Array
  • 数组的类型写法: Array (读作:存储字符串的数组) 或者简写为[String]

  • 初始化

// 初始化器创建一个数组
var someInts =[Int] ()
// 字面量创建一个数组
var someCharacters : Array = ["a","b","c","d","e","f"]
// 等同于
var someCharacters : [String] = ["a","b","c","d","e","f"]
// swift同样可以类型判断,一下写法,系统默认是Array类型
var someCharacters = ["a","b","c","d","e","f"]

  • 访问和修改数组:
    count属性检查数组中的元素数量

print( "The someCharacters contains ( someCharacters.count) items.")

isEmpty属性检查count属性是否为0

if someCharacters.isEmpty {
print("The someCharacters list is empty.")
} else {
print("The someCharacters list is not empty.")
}

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

someCharacters.append("g")

加赋值运算符(+=)在数组末尾添加一个或者多个同类型元素

someCharacters += "h"

根据脚标替换元素

someCharacters[ 1...3] = ["z","s"]
// 现在someCharacters = ["a","z","s","e","f","g","h"]

  • 遍历数组
    for-in循环遍历数组 enumerated()方法来遍历数组 enumerated()方法返回数组中每一个元,包含这个元素的索引和值

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

二、集合Set

集合Set存储的值必须是可哈希的,所有 Swift 的基础类型(比如 String, Int, Double, 和 Bool)默认都是可哈希的。

  • Set类型写法:Set (读作:存储字符串的集合)不同于数组、没有简写

  • 初始化

// 初始化器语法创建
var letters = Set()
// 字面量创建集合
var favoriteGenres: Set = ["Rock", "Classical", "Hip hop"]
// 等价于 (和Array不同,Set必须存在,以区分是数组还是集合)
var favoriteGenres: Set = ["Rock", "Classical", "Hip hop"]

  • 访问和修改:和Array同
  • 遍历集合
    Swift 的 Set类型是无序的。要以特定的顺序遍历合集的值,使用 sorted()方法,它把合集的元素作为使用 < 运算符排序了的数组返回。

for genre in favoriteGenres.sorted() {
print("(genre)")
}

  • 执行集合操作

let oddDigits: Set = [1, 3, 5, 7, 9]
let evenDigits: Set = [0, 2, 4, 6, 8]
let singleDigitPrimeNumbers: Set = [2, 3, 5, 7]

①使用 intersection(_:)方法来创建一个只包含两个合集共有值的新合集;

oddDigits.intersection(evenDigits).sorted()
// []

②使用 symmetricDifference(_:)方法来创建一个只包含两个合集各自有的非共有值的新合集;

oddDigits.symmetricDifference(singleDigitPrimeNumbers).sorted()
// [1, 2, 9]

③使用 union(_:)方法来创建一个包含两个合集所有值的新合集;

oddDigits.union(evenDigits).sorted()
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

④使用 subtracting(_:)方法来创建一个两个合集当中不包含某个合集值的新合集。

oddDigits.subtracting(singleDigitPrimeNumbers).sorted()
// [1, 9]

  • 集合比较
    ①使用“相等”运算符 ( == )来判断两个合集是否包含有相同的值;
    ②使用 isSubset(of:) 方法来确定一个合集的所有值是被某合集包含;
    ③使用 isSuperset(of:)方法来确定一个合集是否包含某个合集的所有值;
    ④使用 isStrictSubset(of:) 或者 isStrictSuperset(of:)方法来确定是个合集是否为某一个合集的子集或者超集,但并不相等;
    ⑤使用 isDisjoint(with:)方法来判断两个合集是否拥有完全不同的值。
三、字典Dictionary

字典储存无序的互相关联的同一类型的键和同一类型的值的集合。每一个值都与唯一的键相关联,它就好像这个值的身份标记一样,字典的 Key类型必须遵循 Hashable协议,就像集合的值类型。

  • 字典类型写法:Dictionary,简写[Key: Value]
  • 初始化

// 初始化器创建
var namesOfIntegers = [Int : String] ()
// 字面量创建
var namesOfIntegers : Dictionary = [1 : "jimmy"]
// 等价于
var namesOfIntegers : [Int : String] = [1 : "jimmy"]
// 推断类型
var namesOfIntegers = [1 : "jimmy"]

  • 访问和修改字典
    字典的 updateValue(:forKey:)方法,会在键对应的值不存在时设置一个值,存在时更新它。updateValue(:forKey:)方法执行后,返回旧的值的可选类型。
  • 遍历字典
    for-in循环来遍历字典的键值对

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

Swift 的 Dictionary类型是无序的。要以特定的顺序遍历字典的键或值,使用键或值的 sorted()方法。

你可能感兴趣的:(Swift学习笔记 - 集合类型)