美文网首页
Swift学习笔记 - 集合类型

Swift学习笔记 - 集合类型

作者: 可怜兮兮的木头 | 来源:发表于2017-10-10 17:22 被阅读0次

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

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

    • 初始化

    // 初始化器创建一个数组
    var someInts =[Int] ()
    // 字面量创建一个数组
    var someCharacters : Array<String> = ["a","b","c","d","e","f"]
    // 等同于
    var someCharacters : [String] = ["a","b","c","d","e","f"]
    // swift同样可以类型判断,一下写法,系统默认是Array<String>类型
    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<String> (读作:存储字符串的集合)不同于数组、没有简写

    • 初始化

    // 初始化器语法创建
    var letters = Set<String>()
    // 字面量创建集合
    var favoriteGenres: Set<String> = ["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>,简写[Key: Value]
    • 初始化

    // 初始化器创建
    var namesOfIntegers = [Int : String] ()
    // 字面量创建
    var namesOfIntegers : Dictionary<Int : String> = [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学习笔记 - 集合类型

          本文链接:https://www.haomeiwen.com/subject/mtwvyxtx.html