22 Swift中的字典

简介: Swift中的字典

Dictionary: Swift中的字典类型


Dictionary

  • 字典储存无序的互相关联的同一类型的键和同一类型的值的集合
  • 字典类型的全写方式Dictionary<Key, Value>,简写方式[Key: Value], 建议使用简写方式
  • 字典的key必须是可哈希的


创建空字典

  • 初始器方式
  • 简写方式
  • 字面量方式


image.png


字面量创建字典


  • [key 1: value 1, key 2: value 2, key 3: value 3]


image.png


count和isEmpt


  • 可以使用count只读属性来找出Dictionary拥有多少元素
  • 使用布尔量isEmpty属性检查字典是否为空


遍历字典


  • For-In 循环
  • 可以通过访问字典的keys和values属性来取回可遍历的字典的键或值的集合
  • Swift的Dictionary类型是无序的。要以特定的顺序遍历字典的键或值,使用键或值的sorted()方法


image.png


字典的常见操作


添加或更新元素

  • 使用下标添加或更新元素
  • 使用updateValue(_:forKey:)方法添加或更新元素,返回一个字典值类型的可选项值


移除元素

  • 使用下标脚本语法给一个键赋值nil来从字典当中移除一个键值对
  • 使用removeValue(forKey:)来从字典里移除键值对。这个方法移除键值对如果他们存在的话,并且返回移除的值,如果值不存在则返回nil


合并两个字典

  • merge(_:uniquingKeysWith:)


image.png


//注意merge方法已经被废弃了vardict= ["a":1,"b":2]
print(dict.merging(["a":2, "c":5], uniquingKeysWith: {(current, _) ->Intincurrent}))
//merging方法是返回的新的值//merge会改变原来的值,没有返回值


firstIndex

  • 虽然字典是无序的,但是每个kv对在扩容之前的位置是稳定的。如果你需要保持顺序的kv对可以使用KeyValuePairs


image.png


底层实现探索


从下标操作谈起


image.png


Dictionary._Variant的setValue


image.png


_NativeDictionary的setValue


image.png


_NativeDictionary的_insert


image.png

_NativeDictionary的uncheckedInitialize


image.png


_NativeDictionary的findKey


image.png




目录
相关文章
|
6月前
|
存储 Swift
在Swift编程语言中,字典(Dictionary)
在Swift编程语言中,字典(Dictionary)
77 3
|
13天前
|
存储 Swift iOS开发
Swift 字典
10月更文挑战第27天
21 2
|
6月前
|
存储 安全 Swift
【Swift开发专栏】Swift中的集合类型:数组、字典与集合
【4月更文挑战第30天】本文探讨Swift的三种内置集合类型:数组、字典和集合。数组是有序元素集合,支持动态大小调整和类型安全;字典是无序键值对,适用于快速查找;集合是无序不重复元素集合,适合检查元素存在性和集合运算。理解这些特性和用法能提升Swift编程效率。
69 1
|
6月前
|
存储 Swift
在Swift编程语言中,字典(Dictionary)
在Swift编程语言中,字典(Dictionary)
427 3
|
6月前
|
存储 Swift
在Swift中,数组(Arrays)和字典
在Swift中,数组(Arrays)和字典
58 1
|
Swift 索引
Swift - 字典排序方法
Swift - 字典排序方法
178 0
|
Swift
Swift - 字典
Swift - 字典
85 0
|
Swift 索引
Swift实用小册04:数组、集合和字典的使用
Swift实用小册04:数组、集合和字典的使用
240 0
Swift实用小册04:数组、集合和字典的使用
|
存储
【Swift4】(3) 数组 | 字典 | 示例
【Swift4】(3) 数组 | 字典 | 示例
104 0
|
存储 API Swift
Swift5.1—字典
Swift5.1—字典
247 0