18 在Swift中創(chuàng)建一個(gè)數(shù)組

創(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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末元暴,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子兄猩,更是在濱河造成了極大的恐慌茉盏,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件枢冤,死亡現(xiàn)場(chǎng)離奇詭異鸠姨,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)淹真,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門讶迁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人核蘸,你說我怎么就攤上這事巍糯。” “怎么了值纱?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵鳞贷,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我虐唠,道長(zhǎng)搀愧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任疆偿,我火速辦了婚禮咱筛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘杆故。我一直安慰自己迅箩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布处铛。 她就那樣靜靜地躺著饲趋,像睡著了一般拐揭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上奕塑,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天堂污,我揣著相機(jī)與錄音,去河邊找鬼龄砰。 笑死盟猖,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的换棚。 我是一名探鬼主播式镐,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼固蚤!你這毒婦竟也來了娘汞?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤颇蜡,失蹤者是張志新(化名)和其女友劉穎价说,沒想到半個(gè)月后辆亏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體风秤,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年扮叨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了缤弦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡彻磁,死狀恐怖碍沐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情衷蜓,我是刑警寧澤累提,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站磁浇,受9級(jí)特大地震影響斋陪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜置吓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一无虚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧衍锚,春花似錦友题、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽踢匣。三九已至,卻和暖如春戈抄,著一層夾襖步出監(jiān)牢的瞬間符糊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工呛凶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留男娄,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓漾稀,卻偏偏與公主長(zhǎng)得像模闲,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子崭捍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容