Swift3.0 - Array

Swift3.0 - 真的很簡(jiǎn)單
Swift3.0 - 數(shù)據(jù)類(lèi)型
Swift3.0 - Array
Swift3.0 - 字典
Swift3.0 - 可選值
Swift3.0 - 集合
Swift3.0 - 流控制
Swift3.0 - 對(duì)象和類(lèi)
Swift3.0 - 屬性
Swift3.0 - 函數(shù)和閉包
Swift3.0 - 初始化和釋放
Swift3.0 - 協(xié)議protocol
Swift3.0 - 類(lèi)和結(jié)構(gòu)體的區(qū)別
Swift3.0 - 枚舉
Swift3.0 - 擴(kuò)展
Swift3.0 - 下標(biāo)
Swift3.0 - 泛型
Swift3.0 - 異常錯(cuò)誤
Swift3.0 - 斷言
Swift3.0 - 自動(dòng)引用計(jì)數(shù)(strong,weak,unowned)
Swift3.0 - 檢測(cè)API
Swift3.0 - 對(duì)象的標(biāo)識(shí)
Swift3.0 - 注釋
Swift3.0 - 元類(lèi)型
Swift3.0 - 空間命名
Swift3.0 - 對(duì)象判等
Swift3.0 - 探究Self的用途
Swift3.0 - 類(lèi)簇
Swift3.0 - 動(dòng)態(tài)調(diào)用對(duì)象(實(shí)例)方法
Swift3.0 - 文本輸出
Swift3.0 - 黑魔法swizzle
Swift3.0 - 鏡像
Swift3.0 - 遇到的坑

基本

  • 定義
list1 = ["你好","2","3","4"]
let list2:[String] = ["你好","2","3","4"]
let list3:[Any] = ["你好","2","3",3,UILabel()]
let list4:NSArray =  ["你好","2","3","4",UILabel()]
let list5:NSMutableArray =  ["1","2","3","4"]
  • 清空數(shù)組
list2.removeAll() //  如果定義為var
list2 = [] // 如果定義為var
list5.removeAllObjects() // var 和let 都可以
list5 = [] // 如果定義為var
  • 取代操作
shoppingList[4...6] = ["Bananas", "Apples"] // 將數(shù)組4...6 的范圍用指定的數(shù)組取代
  • 插入移除操作
 shoppingList.insert("Maple Syrup", at: 0)
 let mapleSyrup = shoppingList.remove(at: 0)
 let apples = shoppingList.removeLast()
  • 遍歷數(shù)組
 for item in shoppingList {
  print(item)
 }
 for (index, value) in shoppingList.enumerated() {
    print("Item \\(index + 1): \\(value)")
 }

高級(jí)

  • 認(rèn)識(shí)map

看一下它的定義

func map<T>(_ transform: (Element) throws -> T) rethrows -> [T]

解釋:
T 為泛型
transform: 閉包函數(shù) 我們需要給它傳入一個(gè)有參數(shù)有返回值的閉包函數(shù)
[T] 函數(shù)會(huì)返回給我們一個(gè)T類(lèi)型的數(shù)組

應(yīng)用:我們有這樣一個(gè)需求,給一組數(shù)據(jù)中大于20的數(shù)字乘以3

//1.先定義一個(gè)數(shù)組
var numbers = [21, 19, 7, 12]
//2.創(chuàng)建一個(gè)有一個(gè)參數(shù)一個(gè)返回值的閉包函數(shù)
var closure = {(number:Int) -> Int in
var  result = number
if number > 20 {
result *= 3
}
return result
}
//3.調(diào)用map函數(shù)
print(numbers.map(closure))

由于swift有類(lèi)型推斷的功能,我們可以這樣寫(xiě)

let mappedNumbers = numbers.map({ number -> Int in
    if number > 20{
      return 3 * number
    }
      return number
})

如果沒(méi)有邏輯判斷,給所有值統(tǒng)一乘以3,我們甚至可以這樣寫(xiě)

let mappedNumbers = numbers.map({ number -> Int in
  return number*3
})

再簡(jiǎn)潔點(diǎn)

let mappedNumbers = numbers.map({ number  in
   number*3
})

如果你要將數(shù)組中的值全部替換為0你可以像下面這樣

 let mappedNumbers = numbers.map({_ in 
   return 0
})

我們測(cè)試一下 for ... in 和 map的速度
測(cè)試1:數(shù)組numbers的數(shù)字變?yōu)?0

for ... in

var numbers = Array(repeating: 3, count: 1000000)
var date1 = NSDate()
for i in 0..<numbers.count{
  numbers[i] = 0
}
print(NSDate().timeIntervalSince(date1 as Date))

運(yùn)行兩次測(cè)試數(shù)據(jù)

0.0242440104484558
0.0248509645462036

map

var numbers = Array(repeating: 3, count: 1000000)
var date1 = NSDate()
var newNumbers = numbers.map({_ in
    return 0
})
print(NSDate().timeIntervalSince(date1 as Date))

運(yùn)行兩次結(jié)果

0.219065964221954
0.201902985572815

我測(cè)試一下小數(shù)據(jù) 同時(shí)給100個(gè)數(shù)字的數(shù)組設(shè)置值
for ... in

0.000165998935699463

map

0.0013270378112793

結(jié)論:
在執(zhí)行速度上還是for...in 比較快

問(wèn)題1 :map的優(yōu)勢(shì)在哪里呢?


sort 排序

public func sorted(by areInIncreasingOrder: (Element, Element) -> Bool) -> [Element]

參數(shù):

areInIncreasingOrder 兩個(gè)參數(shù)一個(gè)返回值得閉包

我們給1萬(wàn)個(gè)數(shù)組進(jìn)行排序,測(cè)一下for in 循環(huán)排序的時(shí)間

// 冒泡排序法

ar date1 = NSDate()
numbers.sort(by: {$0 > $1})
var swap:Int
for i in 0..<numbers.count{
    var num = numbers[i]
    for j in i..<numbers.count{
       if num < numbers[j]{
           (num,numbers[j]) = (numbers[j],num)
      }
  }
}

運(yùn)行結(jié)果

3.54646998643875
3.48700600862503

使用sort 對(duì)100萬(wàn)個(gè)數(shù)字進(jìn)行排序

var numbers = Array(repeating: 3, count: 1000000)
for i in 0..<numbers.count{
    numbers[i] = i
}
var date1 = NSDate()
numbers.sort(by: {$0 > $1})
print(NSDate().timeIntervalSince(date1 as Date))

運(yùn)行結(jié)果

2.71596896648407
2.66568303108215

結(jié)論:

如果使用排序建議使用蘋(píng)果給我們提供的方法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末雷猪,一起剝皮案震驚了整個(gè)濱河市棚贾,隨后出現(xiàn)的幾起案子顽腾,更是在濱河造成了極大的恐慌狸眼,老刑警劉巖悔详,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件勃刨,死亡現(xiàn)場(chǎng)離奇詭異柱嫌,居然都是意外死亡沽甥,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén)驻仅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)谅畅,“玉大人,你說(shuō)我怎么就攤上這事噪服≌毙海” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵粘优,是天一觀的道長(zhǎng)仇味。 經(jīng)常有香客問(wèn)我,道長(zhǎng)雹顺,這世上最難降的妖魔是什么丹墨? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮嬉愧,結(jié)果婚禮上贩挣,老公的妹妹穿的比我還像新娘。我一直安慰自己没酣,他們只是感情好揽惹,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著四康,像睡著了一般搪搏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上闪金,一...
    開(kāi)封第一講書(shū)人閱讀 52,156評(píng)論 1 308
  • 那天疯溺,我揣著相機(jī)與錄音,去河邊找鬼哎垦。 笑死囱嫩,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的漏设。 我是一名探鬼主播墨闲,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼郑口!你這毒婦竟也來(lái)了鸳碧?” 一聲冷哼從身側(cè)響起盾鳞,我...
    開(kāi)封第一講書(shū)人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瞻离,沒(méi)想到半個(gè)月后腾仅,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡套利,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年推励,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肉迫。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡验辞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出喊衫,到底是詐尸還是另有隱情受神,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布格侯,位于F島的核電站,受9級(jí)特大地震影響财著,放射性物質(zhì)發(fā)生泄漏联四。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一撑教、第九天 我趴在偏房一處隱蔽的房頂上張望朝墩。 院中可真熱鬧,春花似錦伟姐、人聲如沸收苏。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)鹿霸。三九已至,卻和暖如春秆乳,著一層夾襖步出監(jiān)牢的瞬間懦鼠,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工屹堰, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留肛冶,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓扯键,卻偏偏與公主長(zhǎng)得像睦袖,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子荣刑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

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