18 在Swift中创建一个数组

简介: 在Swift中创建一个数组

创建一个数组


字面量创建


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


image.png


字面量创建空数组


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


image.png


初始化器


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

image.png

初始化器参数


  • init(repeating repeatedValue:Element, count:Int)
  • init(arrayLiteral elements:Element...)


image.png


  • init(_ elements: S) where S: Sequence, Self.Element == S.Element
  • init(from decoder: Decoder) throws


image.png

letchars=Array("hello")
print(chars)
//["h", "e", "l", "l", "0"]

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

数组遍历

  • For-in
  • forEach方法
  • 无法使用break或continue跳出或者跳过循环
  • 使用ruturn只能退出当前一次循环的执行体


image.png

  • 同时得到索引和值enumerated()


image.png

  • 使用Iterator遍历数组


image.png

索引

  • startIndex返回第一个元素的位置,对于数组来说,永远都是0
  • endIndex返回最后一个元素索引+1的位置,对于数组来说,等同于count
  • 如果数组为空,startIndex等于endIndex
  • indices获取数组的索引区间


image.png


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

判断是否包含指定元素

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

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

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


image.png


查找元素

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


image.png


查找索引

  • firstIndex(of:)返回给定的元素在数组中出现的第一个位置(optional)
  • lastIndex(of:)返回给定的元素在数组中出现的最后一个位置(optional)


image.png


  • firstIndex(where:)返回符合条件的第一个位置(optional)
  • lastIndex(where:)返回符合条件的最后一个位置(optional)


image.png


查找最大最小元素

  • min()返回数组中最小的元素
  • max()返回数组中最大的元素


image.png


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


image.png


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

在末尾添加

  • append(_:)在末尾添加一个元素
  • append(contentsOf:)在末尾添加多个元素


image.png


在任意位置插入

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


image.png


字符串也是Collection

  • 字符串也是Collection,Element是Character类型


image.png


移除单个元素

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



image.png


移除多个元素

  • removeFirst(:)移除数组前面多个元素
  • removeLast(:)移除数组后面多个元素


image.png


  • removeSubrange(_:)移除数组中给定返回的元素
  • removeAll()移除数组所有元素
  • removeAll(keepingCapacity:)移除数组所有元素,保留数组容量


image.png


访问和操作数组:ArraySlice

移除多个元素

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


image.png


通过Drop得到ArraySlice

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


image.png


通过prefix得到ArraySlice

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


image.png


通过suffix得到ArraySlice

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


image.png


通过Range得到ArraySlice

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


image.png


ArraySlice转为Array

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


image.png

ArraySlice和原Array相互独立

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


image.png


重排操作

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

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


image.png


数组的逆序

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


image.png


image.png


数组的分组

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


image.png


数组的排序

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


image.png


交换数组两个元素

  • swapAt(_:_:)交换指定位置的两个元素


image.png


拼接操作

字符串数组拼接

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


image.png


元素为Sequence数组的拼接

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


image.png

























































































































目录
相关文章
|
4月前
|
存储 安全 Swift
在Swift中,数组(Array)
在Swift中,数组(Array)
30 3
|
2天前
|
存储 安全 Swift
【Swift开发专栏】Swift中的集合类型:数组、字典与集合
【4月更文挑战第30天】本文探讨Swift的三种内置集合类型:数组、字典和集合。数组是有序元素集合,支持动态大小调整和类型安全;字典是无序键值对,适用于快速查找;集合是无序不重复元素集合,适合检查元素存在性和集合运算。理解这些特性和用法能提升Swift编程效率。
|
4月前
|
Swift 索引
在Swift中,要删除数组中特定索引位置的元素
在Swift中,要删除数组中特定索引位置的元素
14 3
|
4月前
|
存储 安全 Swift
在Swift编程语言中,数组
在Swift编程语言中,数组
27 2
|
4月前
|
存储 安全 Swift
在Swift编程语言中,数组(Array)
在Swift编程语言中,数组(Array)
27 3
|
5月前
|
存储 Swift
在Swift中,数组(Arrays)和字典
在Swift中,数组(Arrays)和字典
29 1
|
Swift
Swift - 用装有控制器name的数组for循环批量创建控制器(string转UIViewController)
Swift - 用装有控制器name的数组for循环批量创建控制器(string转UIViewController)
74 0
|
Swift
Swift - 数组
Swift - 数组
74 0
|
Swift 索引
Swift实用小册04:数组、集合和字典的使用
Swift实用小册04:数组、集合和字典的使用
204 0
Swift实用小册04:数组、集合和字典的使用
|
存储 Swift 索引
Swift5.1—数组(Arrays)
Swift5.1—数组(Arrays)
142 0

相关课程

更多