美文网首页Swift
18 在Swift中创建一个数组

18 在Swift中创建一个数组

作者: 为了自由的白菜 | 来源:发表于2023-03-08 09:32 被阅读0次

创建一个数组

字面量创建

  • 可以使用数组字面量来初始化一个数组,它是一种以数组集合来写一个或者多个值得简写方式。数组字面量写做一系列的值,用逗号分隔,用方括号括起来
image-20230222222419517.png

字面量创建空数组

  • 创建空数组的时候必须携带类型信息
  • 如果内容已经提供了类型信息,比如说作为函数的实际参数或者已经分类了的变量或常量,你可以通过空数组字面量来创建一个空数组
image-20230222222618580.png

初始化器

  • 使用初始化器有两种方式
    • [类型]()
    • Array<类型>()
image-20230222222910906.png

初始化器参数

  • init(repeating repeatedValue:Element, count:Int)
  • init(arrayLiteral elements:Element...)
image-20230222223129414.png
  • init<S>(_ elements: S) where S: Sequence, Self.Element == S.Element
  • init(from decoder: Decoder) throws
image-20230222223328013.png
let chars = Array("hello")
print(chars)
//["h", "e", "l", "l", "0"]

访问和操作数组:遍历和索引

数组遍历

  • For-in
  • forEach方法
    • 无法使用break或continue跳出或者跳过循环
    • 使用ruturn只能退出当前一次循环的执行体
image-20230222224041935.png
  • 同时得到索引和值enumerated()
image-20230222224242279.png
  • 使用Iterator遍历数组
image-20230222224445702.png

索引

  • startIndex返回第一个元素的位置,对于数组来说,永远都是0

  • endIndex返回最后一个元素索引+1的位置,对于数组来说,等同于count

  • 如果数组为空,startIndex等于endIndex

  • indices获取数组的索引区间

image-20230222224753312.png

访问和操作数组:查找操作

判断是否包含指定元素

  • contain(_:)判断数组是否包含指定元素
  • contains(where:)判断数组是否包含符合给定条件的元素

判断所有元素符合某个条件

  • allSatisfy(_:)判断数组的每一个元素都符合给定的条件
image-20230222225557338.png

查找元素

  • first 返回数组第一个元素(optional),如果数组为空,返回nil
  • last返回数组最后一个元素(optional),如果数组为空,返回nil
  • first(where:)返回数组第一个符合给定条件的元素(optional)
  • last(where:)返回数组最后一个符合给定条件的元素(optional)
image-20230222225914133.png

查找索引

  • firstIndex(of:)返回给定的元素在数组中出现的第一个位置(optional)
  • lastIndex(of:)返回给定的元素在数组中出现的最后一个位置(optional)
image-20230222230213230.png
  • firstIndex(where:)返回符合条件的第一个位置(optional)
  • lastIndex(where:)返回符合条件的最后一个位置(optional)
image-20230222230438264.png

查找最大最小元素

  • min()返回数组中最小的元素
  • max()返回数组中最大的元素
image-20230222230633718.png
  • min(by:)利用给定的方式比较元素并返回数组中的最小元素
  • max(by:)利用给定的方式比较元素并返回数组中的最大元素
image-20230222230756887.png

访问和操作数组:添加和删除

在末尾添加

  • append(_:)在末尾添加一个元素
  • append(contentsOf:)在末尾添加多个元素
image-20230222231533341.png

在任意位置插入

  • insert(_:at:)在指定的位置插入一个元素
  • insert(contentsOf:at:)在指定位置插入多个元素
image-20230222231707765.png

字符串也是Collection

  • 字符串也是Collection,Element是Character类型
image-20230222231813982.png

移除单个元素

  • remove(at:)移除并返回指定位置的一个元素
  • removeFirst()移除并返回数组的第一个元素
  • popFirsh()移除并返回数组的第一个元素(optional),数组为空返回nil
image-20230222232018112.png

移除多个元素

  • removeFirst(:)移除数组前面多个元素
  • removeLast(:)移除数组后面多个元素
image-20230222232342387.png
  • removeSubrange(_:)移除数组中给定返回的元素
  • removeAll()移除数组所有元素
  • removeAll(keepingCapacity:)移除数组所有元素,保留数组容量
image-20230222232539904.png

访问和操作数组:ArraySlice

移除多个元素

  • ArraySlice 是数组或者其他ArraySlice的一段连续切片,和原数组共享内存
  • 当要改变ArraySlice的时候,ArraySlice会copy出来,形成单独内存
  • ArraySlice拥有和Array基本完全类似的方法
image-20230223220052447.png

通过Drop得到ArraySlice

  • dropFirst(:)”移除“原数组前面指定个数的元素得到一个ArraySlice
  • dropLast(:)“移除”原数组后面指定个数的元素得到一个Arra
  • drop(:)“移除”原数组符合指定条件的元素得到一个ArraySlice
image-20230223220400172.png

通过prefix得到ArraySlice

  • prefix()获取数组前面指定个数的元素组成的ArraySlice
  • prefix(upTo:)获取数组到指定位置(不包含指定位置)前面的元素组成ArraySlice
  • prefix(through:)获取数组到指定位置(包含指定位置)前面的元素组成的ArraySlice
  • prefix(while:)获取数组前面符合条件的元素(到第一个不符合条件的元素截止)组成的ArraySlice
image-20230223220804987.png

通过suffix得到ArraySlice

  • suffix()获取数组后面指定个数的元素组成的ArraySlice
  • suffix(from:)获取数组从指定位置到结尾(包含指定位置)的元素组成的ArraySlice
image-20230223221112470.png

通过Range得到ArraySlice

  • 可以通过对数组下标指定Range获取ArraySlice,可以使用闭区间、半开半闭区间、单侧区间、甚至可以只使用...来获取整个数组组成的ArraySlice
image-20230223221317417.png

ArraySlice转为Array

  • ArraySlice无法直接赋值给一个Array的常量或变量,需要使用Array(slice)
image-20230223221521431.png

ArraySlice和原Array相互独立

  • ArraySlice和原Array是相互独立的,它们添加删除元素不会影响对方
image-20230223221635883.png

重排操作

数组元素的随机化 (歌单随机播放)

  • shuffle()在原数组上将数组元素打乱,只能作用在数组变量上
  • shuffled()返回原数组的随机化数组,可以作用在数组变量和常量上
image-20230223222414436.png

数组的逆序

  • reverse()在原数组上将数组逆序,只能作用在数组变量上
  • reversed()返回原数组的逆序“集合表示”,可以作用在数组变量和常量上,该方法不会分配新内存空间
image-20230223222717013.png image-20230223223633372.png

数组的分组

  • partition(by belongsInSecondPartition:(Element)throws -> Bool)将数组以某个条件分组,数组前半部分都是不符合条件的元素,数组的后半部分都是符合条件的元素
image-20230223223009639.png

数组的排序

  • sort()在原数组上将元素排序,只能作用于数组变量
  • sorted()返回原数组的排序结果数组,可以作用在数组变量和常量上
image-20230223223220460.png

交换数组两个元素

  • swapAt(_:_:)交换指定位置的两个元素
image-20230223223357705.png

拼接操作

字符串数组拼接

  • joined()拼接字符串数组里的所有元素为一个字符串
  • joined(separator:)以给定的分隔符拼接字符串数组里的所有元素为一个字符串
image-20230223224133284.png

元素为Sequence数组的拼接

  • joined()拼接数组里的所有元素为一个更大的Sequence
  • joined(separator:)以给定的分隔符拼接数组里的所有元素为一个更大的Sequence
image-20230223224356344.png

相关文章

  • 集合类型

    数组 创建一个空数组 创建一个带默认值的数组Swift 中的 Array 类型还提供一个可以创建特定大小并且所有数...

  • Swift5 数组(Array)操作

    Swift数组创建 Swift获取指定位置数据 Swift数组遍历 for、map、flatMap、reduce ...

  • Swift - Collection Types - Array

    数组 — Array 通过一个默认值重复创建数组 通过两个数组创建一个新的数组 通过字面量创建 由于 Swift ...

  • iOS开发 - 「Swift 学习」Array集合类型创建、编辑

    Swift语言创建数组,合并、插入、删除数组元素 创建数组 一、创建空数组 二、创建数值型数组 直接用字面量创建数...

  • Swift数组和字典

    数组的创建 数组的访问和查找 数组的编辑 Swift数组提供了几种remove方法,用来删除数组中的元素 数组排序...

  • Swift数组

    创建数组 数组是用来有序存储同样类型的值。同样的值可以在数组中不同的位置出现多次。 Swift中数组中存储的值类型...

  • override(重载)

    创建一个基类:Vehicle.Swift 再创建一个子类Bicycle.swift: 在main.swift中测试...

  • swift中一些超级强大的实用技巧

    1.swift中的过滤器(filter函数 && map函数) 情景1:你有一个数组,接着你想创建一个新数组,这组...

  • 2018-07-13 swift数组、区间

    swift 使用[]创建数组,[]中可以放整型数组,也可以放字符串数组。可以使用[0]来访问第一个元素 改变或者取...

  • Swift与OC混编

    标签:Swift 在Swift中调用OC 首先创建OC/Swift工程 然后创建swift/OC文件,Xcode会...

网友评论

    本文标题:18 在Swift中创建一个数组

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