創(chuàng)建一個(gè)數(shù)組
字面量創(chuàng)建
- 可以使用數(shù)組字面量來初始化一個(gè)數(shù)組沪停,它是一種以數(shù)組集合來寫一個(gè)或者多個(gè)值得簡(jiǎn)寫方式。數(shù)組字面量寫做一系列的值,用逗號(hào)分隔搅吁,用方括號(hào)括起來
image-20230222222419517.png
字面量創(chuàng)建空數(shù)組
- 創(chuàng)建空數(shù)組的時(shí)候必須攜帶類型信息
- 如果內(nèi)容已經(jīng)提供了類型信息吭练,比如說作為函數(shù)的實(shí)際參數(shù)或者已經(jīng)分類了的變量或常量诫龙,你可以通過空數(shù)組字面量來創(chuàng)建一個(gè)空數(shù)組
image-20230222222618580.png
初始化器
- 使用初始化器有兩種方式
- [類型]()
- Array<類型>()
image-20230222222910906.png
初始化器參數(shù)
- 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"]
訪問和操作數(shù)組:遍歷和索引
數(shù)組遍歷
- For-in
- forEach方法
- 無法使用break或continue跳出或者跳過循環(huán)
- 使用ruturn只能退出當(dāng)前一次循環(huán)的執(zhí)行體
image-20230222224041935.png
- 同時(shí)得到索引和值enumerated()
image-20230222224242279.png
- 使用Iterator遍歷數(shù)組
image-20230222224445702.png
索引
startIndex返回第一個(gè)元素的位置,對(duì)于數(shù)組來說鲫咽,永遠(yuǎn)都是0
endIndex返回最后一個(gè)元素索引+1的位置签赃,對(duì)于數(shù)組來說,等同于count
如果數(shù)組為空分尸,startIndex等于endIndex
indices獲取數(shù)組的索引區(qū)間
image-20230222224753312.png
訪問和操作數(shù)組:查找操作
判斷是否包含指定元素
- contain(_:)判斷數(shù)組是否包含指定元素
- contains(where:)判斷數(shù)組是否包含符合給定條件的元素
判斷所有元素符合某個(gè)條件
- allSatisfy(_:)判斷數(shù)組的每一個(gè)元素都符合給定的條件
image-20230222225557338.png
查找元素
- first 返回?cái)?shù)組第一個(gè)元素(optional)锦聊,如果數(shù)組為空,返回nil
- last返回?cái)?shù)組最后一個(gè)元素(optional)箩绍,如果數(shù)組為空孔庭,返回nil
- first(where:)返回?cái)?shù)組第一個(gè)符合給定條件的元素(optional)
- last(where:)返回?cái)?shù)組最后一個(gè)符合給定條件的元素(optional)
image-20230222225914133.png
查找索引
- firstIndex(of:)返回給定的元素在數(shù)組中出現(xiàn)的第一個(gè)位置(optional)
- lastIndex(of:)返回給定的元素在數(shù)組中出現(xiàn)的最后一個(gè)位置(optional)
image-20230222230213230.png
- firstIndex(where:)返回符合條件的第一個(gè)位置(optional)
- lastIndex(where:)返回符合條件的最后一個(gè)位置(optional)
image-20230222230438264.png
查找最大最小元素
- min()返回?cái)?shù)組中最小的元素
- max()返回?cái)?shù)組中最大的元素
image-20230222230633718.png
- min(by:)利用給定的方式比較元素并返回?cái)?shù)組中的最小元素
- max(by:)利用給定的方式比較元素并返回?cái)?shù)組中的最大元素
image-20230222230756887.png
訪問和操作數(shù)組:添加和刪除
在末尾添加
- append(_:)在末尾添加一個(gè)元素
- append(contentsOf:)在末尾添加多個(gè)元素
image-20230222231533341.png
在任意位置插入
- insert(_:at:)在指定的位置插入一個(gè)元素
- insert(contentsOf:at:)在指定位置插入多個(gè)元素
image-20230222231707765.png
字符串也是Collection
- 字符串也是Collection,Element是Character類型
image-20230222231813982.png
移除單個(gè)元素
- remove(at:)移除并返回指定位置的一個(gè)元素
- removeFirst()移除并返回?cái)?shù)組的第一個(gè)元素
- popFirsh()移除并返回?cái)?shù)組的第一個(gè)元素(optional)材蛛,數(shù)組為空返回nil
image-20230222232018112.png
移除多個(gè)元素
- removeFirst(:)移除數(shù)組前面多個(gè)元素
- removeLast(:)移除數(shù)組后面多個(gè)元素
image-20230222232342387.png
- removeSubrange(_:)移除數(shù)組中給定返回的元素
- removeAll()移除數(shù)組所有元素
- removeAll(keepingCapacity:)移除數(shù)組所有元素圆到,保留數(shù)組容量
image-20230222232539904.png
訪問和操作數(shù)組:ArraySlice
移除多個(gè)元素
- ArraySlice 是數(shù)組或者其他ArraySlice的一段連續(xù)切片,和原數(shù)組共享內(nèi)存
- 當(dāng)要改變ArraySlice的時(shí)候卑吭,ArraySlice會(huì)copy出來芽淡,形成單獨(dú)內(nèi)存
- ArraySlice擁有和Array基本完全類似的方法
image-20230223220052447.png
通過Drop得到ArraySlice
- dropFirst(:)”移除“原數(shù)組前面指定個(gè)數(shù)的元素得到一個(gè)ArraySlice
- dropLast(:)“移除”原數(shù)組后面指定個(gè)數(shù)的元素得到一個(gè)Arra
- drop(:)“移除”原數(shù)組符合指定條件的元素得到一個(gè)ArraySlice
image-20230223220400172.png
通過prefix得到ArraySlice
- prefix()獲取數(shù)組前面指定個(gè)數(shù)的元素組成的ArraySlice
- prefix(upTo:)獲取數(shù)組到指定位置(不包含指定位置)前面的元素組成ArraySlice
- prefix(through:)獲取數(shù)組到指定位置(包含指定位置)前面的元素組成的ArraySlice
- prefix(while:)獲取數(shù)組前面符合條件的元素(到第一個(gè)不符合條件的元素截止)組成的ArraySlice
image-20230223220804987.png
通過suffix得到ArraySlice
- suffix()獲取數(shù)組后面指定個(gè)數(shù)的元素組成的ArraySlice
- suffix(from:)獲取數(shù)組從指定位置到結(jié)尾(包含指定位置)的元素組成的ArraySlice
image-20230223221112470.png
通過Range得到ArraySlice
- 可以通過對(duì)數(shù)組下標(biāo)指定Range獲取ArraySlice,可以使用閉區(qū)間陨簇、半開半閉區(qū)間吐绵、單側(cè)區(qū)間迹淌、甚至可以只使用...來獲取整個(gè)數(shù)組組成的ArraySlice
image-20230223221317417.png
ArraySlice轉(zhuǎn)為Array
- ArraySlice無法直接賦值給一個(gè)Array的常量或變量,需要使用Array(slice)
image-20230223221521431.png
ArraySlice和原Array相互獨(dú)立
- ArraySlice和原Array是相互獨(dú)立的己单,它們添加刪除元素不會(huì)影響對(duì)方
image-20230223221635883.png
重排操作
數(shù)組元素的隨機(jī)化 (歌單隨機(jī)播放)
- shuffle()在原數(shù)組上將數(shù)組元素打亂唉窃,只能作用在數(shù)組變量上
- shuffled()返回原數(shù)組的隨機(jī)化數(shù)組,可以作用在數(shù)組變量和常量上
image-20230223222414436.png
數(shù)組的逆序
- reverse()在原數(shù)組上將數(shù)組逆序纹笼,只能作用在數(shù)組變量上
- reversed()返回原數(shù)組的逆序“集合表示”纹份,可以作用在數(shù)組變量和常量上,該方法不會(huì)分配新內(nèi)存空間
image-20230223222717013.png
image-20230223223633372.png
數(shù)組的分組
- partition(by belongsInSecondPartition:(Element)throws -> Bool)將數(shù)組以某個(gè)條件分組廷痘,數(shù)組前半部分都是不符合條件的元素蔓涧,數(shù)組的后半部分都是符合條件的元素
image-20230223223009639.png
數(shù)組的排序
- sort()在原數(shù)組上將元素排序,只能作用于數(shù)組變量
- sorted()返回原數(shù)組的排序結(jié)果數(shù)組笋额,可以作用在數(shù)組變量和常量上
image-20230223223220460.png
交換數(shù)組兩個(gè)元素
- swapAt(_:_:)交換指定位置的兩個(gè)元素
image-20230223223357705.png
拼接操作
字符串?dāng)?shù)組拼接
- joined()拼接字符串?dāng)?shù)組里的所有元素為一個(gè)字符串
- joined(separator:)以給定的分隔符拼接字符串?dāng)?shù)組里的所有元素為一個(gè)字符串
image-20230223224133284.png
元素為Sequence數(shù)組的拼接
- joined()拼接數(shù)組里的所有元素為一個(gè)更大的Sequence
- joined(separator:)以給定的分隔符拼接數(shù)組里的所有元素為一個(gè)更大的Sequence
image-20230223224356344.png