首页 > 其他分享 >Swift开篇004->集合

Swift开篇004->集合

时间:2023-02-01 12:34:00浏览次数:45  
标签:arr 开篇 0.0 集合 persons 数组 004 var Swift


PART_O 集合简介

  • 集合长度默认可变,若分配成常量,则其大小和内容皆不可变
  • Swift集合类型(必须通过泛型明确存储值)
  • Arrays:数组,有序可重复
  • Sets:集合,无序不重复
  • Dictionaries:字典,无序键值对

PART_A Arrays

  1. 定义(等价,推荐第二种方式)
  • Array<T>
  • [T]
  1. 创建空数组
  • 特定类型空数组:var arr = [String]()
  • 已定义好类型的常量或变量,可用空数组语句创建空数组:arr = [],仍为String类型
  1. 创建带默认值的数组:var arr = [Double](count: 3, repeatedValue: 0.0)
  • 此时结果:arr = [0.0, 0.0, 0.0]
  • count:默认数组长度
  • repeatedValue:默认值
  1. 通过数组相加创建数组:var doubleArr = arr + arr
  • 此时结果:doubleArr = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
  1. 通过字面量构造数组:[value1, value2, ...]
  • var arr: [String] = ["fuck", "me"]
  • 由类型推断可简写:var arr = ["fuck", "me"]
  1. 访问和修改数组
  • count:获取数组长度
  • isEmpty:判空
  • append:在数组后添加新数据项
  • +=:在数组后添加一或多个相同类型的数据项
  • arr[index]:通过下标获取指定索引位置的值
  • 数组的索引从0开始
  • arr[1 ... 3] = ["fuck", "me"]:通过区间修改一系列数据值,即使数量不同
  • insert(_, atIndex: ):向指定索引位置插入数据项
  • removeAtIndex(index):删除指定索引位置的值
  • removeLast():删除最后一项数据值,避免通过 ​count​ 获取数组长度
  1. 遍历:for - in
  • 普通遍历
  • 同时获取数据项的值和索引:for (index, value) in arr.enumerate()

PART_B Sets

只有可以哈希化的类型才可存储在集合中
哈希值是Int类型
相等的对象哈希值必须相同,若 ​​​a == b​​​ 则 ​​a.hashValue == b.hashValue​​ 基本类型默认皆可哈希化,可做集合的值类型或字典的键类型

  1. 定义(方式唯一)
  • Set<T>
  1. 创建空集合
  • var letters = Set<Character>()
  • letters = []:此时 ​letters​ 为空 ​Set​,其类型仍为 ​Set<Charater>​
  1. 用数组字面量创建集合
  • var words: Set<String> = ["fuck", "me"]
  • 或者简写,省略Set的具体类型:var words: Set = ["fuck", "me"]
  1. 访问和修改集合
  • count:获取集合中元素的数量
  • isEmpty:判空
  • insert:添加新元素
  • remove:删除并返回元素值,若集合为空,返回 ​nil​
  • removeAll:删除所有元素
  • contains(value):检查集合是否包含 ​value​
  1. 遍历:for - in
  • 普通遍历(无序)
  • 有序遍历:for num in nums.sort()
  1. 集合操作(皆创建新集合)
  • 基本操作
  • a.intersect(b):交集
  • a.exclusiveOr(b):除交集
  • a.union(b):并集
  • a.subtract(b):a减去a与b的交集
  • 集合成员关系
  • a.isSubsetOf(b):a是否被包含于b
  • a.isSupersetOf(b):a包含于b
  • a.isStrictSubsetOf(b) / isStrictSupersetOf:a是否被包含于b
  • a.isSubsetOf(b):a是否被包含于b

PART_C Dictionaries

存储多个相同类型的值
键唯一,值不唯一
无序

  1. 定义
  • Dictionary<key, value>
  1. 创建空字典
  • var persons = [String: Int]()
  • persons = [:]:此时 ​persons​ 为空 ​Dictionary​,其类型仍为 ​[String: Int]​
  1. 用字典字面量创建字典
  • var persons: [String: Int] = ["zhangsan": 12, "lisi": 17]
  • 简写:var persons = ["zhangsan": 12, "lisi": 17]
  1. 访问和修改字典
  • count:获取字典数据项的数量
  • isEmpty:判空
  • persons["zhangsan"]:通过下标分配新值或者修改指定键位对应的值,空时返回 ​nil​
  • persons.updateValue(_, forKey:):同上
  • persons["zhangsan"] = nil:移除指定键值对
  • persons.removeValueForKey(_):移除并返回值,若空返回 ​nil​
  1. 遍历:for - in
  • 键值遍历:for (key, value) in persons
  • 仅键遍历:for key in persons.keys
  • 仅值遍历:for value in person.value
  1. 通过键集合或值集合构造数组
  • var keyArr = [String](persons.keys)
  • var valueArr = [Int](persons.values)
  1. 因字典是无序的,可用 sort() 对字典的键或值排序


标签:arr,开篇,0.0,集合,persons,数组,004,var,Swift
From: https://blog.51cto.com/u_15950249/6031346

相关文章

  • Swift开篇005->闭包
    PART_A背景闭包的概念:自包含的函数代码块,可以在代码中被传递和使用.用简洁语法构建内联闭包闭包的三种形式全局函数是一个有名字但不会捕获任何值的闭包嵌套函数是一个有......
  • Swift开篇003->控制流、函数
    PART_A控制流​​for​​​​for...in​​forindexin1...5{print(index)}letnames=["cat","dog","fish"]fornameinnames{print(name)}letnums=......
  • Swift开篇001->新建Swift工程
    最近看了点​​Swift的教程​​,在此做个笔记,那就从Xcode新建一个Swift工程开始吧​​File->New->Project​​​​OSX->Application->CommandLineTool​​​​填......
  • Swift开篇002->基本运算符
    PART_A运算符赋值运算符:​​=​​普通赋值varnumnum=5元组赋值let(x,y)=(0,0)​​=​​操作不返回任何值算数、组合赋值、自增自减、、负号、字符串拼接求余时符号......
  • Aforge.net之旅——开篇:从识别验证码开始
    时间过得真快啊,转眼今年就要过去了,大半年都没有写博客了,要说时间嘛,花在泡妹子和搞英语去了,哈哈。。。前几天老大问我怎么这么长时间都没写博客了,好吧,继续坚持,继续分享......
  • Potree 004 点云点大小形状设置
    点云数据就是靠海量的点显示来模拟真实世界的。点大小设置就比较重要,例如如果数据稀疏,点显示的时候,可以设置稍微大一些。如果点数据比较密集,则可以显示小一些。在Potree中......
  • docker(开篇)
    Docker概念:是基于Go语言实现的云开源项目。Docker的主要目标是“Buid,ShipandRunAnyAppAnywhere”;也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,......
  • 这是一个开篇
    设想一个自动驾驶系统,有次在路上发生了追尾,撞坏了前车,事后它的教练向它提出一连串问题,诸如:你是否认为自己犯了个错误?说说当时发生了什么?你当时是怎么想的?为什么没有及时踩......
  • 递归(一)004:2的幂次方表示
    004:2的幂次方表示总时间限制:1000ms内存限制:65536kB描述任何一个正整数都可以用2的幂次方表示。例如:137=27+23+20同时约定方次用括号来表示,即ab可表示为a(b)。......
  • 1、IT运营:开篇 - IT运营系列文章
          笔者在实际的工作中有面试一家公司的运营经理,同时,在博客中也有相关的运营博文进行过记录。前面也开始写相关系列的文章,而此系列主要是根据笔者的学习及总结的......