Swift3.0 數(shù)組的基本操作

初始化數(shù)組

   //MARK : - 初始化數(shù)組
    func demo()
    {
        //OC中數(shù)組分可變和不可變   NSMutableArray / NSArray
        //swift中  可變數(shù)組(var)   不可變(let)
        var array = [Int]()
        
        print("初始容量 : \(array.capacity)")
        
        for i in 0..<9
        {
            array.append(i)
            
            print("\(array)  容量 :  \(array.capacity)")
            /*輸出結(jié)果:         插入元素  如果容量不夠會 *2   (提前預(yù)分配空間,提高效率)
             初始容量 : 0
             [0]  容量 :  2
             [0, 1]  容量 :  2
             [0, 1, 2]  容量 :  4
             [0, 1, 2, 3]  容量 :  4
             [0, 1, 2, 3, 4]  容量 :  8
             [0, 1, 2, 3, 4, 5]  容量 :  8
             [0, 1, 2, 3, 4, 5, 6]  容量 :  8
             [0, 1, 2, 3, 4, 5, 6, 7]  容量 :  8
             [0, 1, 2, 3, 4, 5, 6, 7, 8]  容量 :  16
            */
        }
    }

1.數(shù)組的定義

    //MARK: - 數(shù)組的定義
    func demo()
    {
        
        //Swift中定義數(shù)組和OC一樣,不過沒有 '@'
        //自動推導(dǎo)的結(jié)果 let array: [String] -->表示數(shù)組中的元素都是string類型
        let array1 = ["張三","李四","王五"]
        
        print(array1)        //輸出結(jié)果 : ["張三", "李四", "王五"]
        
        //let array2: [Int] -->表示數(shù)組中的元素都是整形
        //swift中基本數(shù)據(jù)類型不需要包裝
        let array2 = [1,2,3,4,5]
        print(array2)           //輸出結(jié)果 : [1, 2, 3, 4, 5]
        
        //CG  結(jié)構(gòu)體
        let j = CGPoint(x: 100, y: 100)
        //let array3: [CGPoint]
        let array3 = [j]
        print(array3)       //輸出結(jié)果 : [(100.0, 100.0)]
        
        //混合數(shù)組      (少用)
        //let array4: [NSObject] (如果數(shù)組中的類型不一致,自動推導(dǎo)的結(jié)果為NSObject)
        //在混合數(shù)組中  CG結(jié)構(gòu)體需要包裝
        let array4 = ["馬六" , 4 , NSValue(cgPoint: j)]
        print(array4)       //輸出結(jié)果 : [馬六, 4, NSPoint: {100, 100}]
        
        //在swift中還有一種類型 [AnyObject] -->任意對象
        //在swift中 一個類可以沒有任何 ' 父類 '  AnyObject比NSObject的范圍更大
   
    }

2.數(shù)組的遍歷

    //MARK: -數(shù)組的遍歷
    func demo()
    {
        let array1 = ["張三","李四","王五"]
        
        //1.第一種方式 (按照下標(biāo)遍歷)
        for i in 0..<array1.count
        {
            print(array1[i])
            /*  輸出結(jié)果:
             張三
             李四
             王五
            */
        }
        
        //2.第二種方式  (for in 遍歷元素)
        for i in array1
        {
            print(i)            //輸出結(jié)果與上相同
        }
        
        //3.第三種方式  (enum block 遍歷,同時遍歷下標(biāo)和內(nèi)容)
        // i 的數(shù)據(jù)類型為元組  let i: (offset: Int, element: String)
        for i in array1.enumerated()
        {
            print(i)
            /*  輸出結(jié)果:
             (0, "張三")
             (1, "李四")
             (2, "王五")
             */
            //取出索引和內(nèi)容
            print("\(i.offset)  \(i.element)")
        }
        
        //4.第四種方式  (遍歷下標(biāo)和內(nèi)容2)
        // a 為索引下標(biāo)  b 為小標(biāo)對應(yīng)的元素      ( a / b 的名字可以自定義 )
        for (a , b) in array1.enumerated()
        {
            print("\(a)  \(b)")
            /*  輸出結(jié)果:
             2  王五
             0  張三
             1  李四
             2  王五
             */
        }
        
        //5.第五種方式 (反向遍歷)
        for i in array1.reversed()
        {
            print(i)        //輸出結(jié)果同上,不過是反向
        }
        
        //6.第六種方式  (反向索引內(nèi)容)
//        for ( c , d ) in array1.reversed().enumerated()           //錯誤內(nèi)容  索引內(nèi)容不一致
        for ( c , d ) in array1.enumerated().reversed()
        {
            print("\(c)  \(d)")
        }
    }

3.數(shù)組的增-刪-改

    //MARK: - 數(shù)組的增 刪 改
    func demo3()
    {
        var array1 = ["張三","李四","王五"]
        
        //追加元素
        array1.append("田七")
        print(array1)           //輸出結(jié)果 : ["張三", "李四", "王五", "田七"]
        
        //修改元素 通過下標(biāo)定位
        array1[0] = "王八"
        print(array1)           //輸出結(jié)果 : ["王八", "李四", "王五", "田七"]
        
//        array1[5] = "XXX"     //數(shù)組越界
        
        //刪除元素  
//        array1.remove(at: 1)        //刪除指定下標(biāo)
//        array1.removeAll()          //刪除所有
//        array1.removeLast()         //刪除最后一個
//        array1.removeFirst()        //刪除第一個
        array1.removeAll(keepingCapacity: true)     //刪除全部并且保留空間
        
    }

4.合并數(shù)組

    //MARK: - 數(shù)組的合并
    func demo()
    {
        //事例1
        var array1  = ["張三","李四","王五"]
        let array2 = ["馬六"]
        
        //將array2的內(nèi)容合并到array1中
        //注意 : 要合并數(shù)組的兩個類型必須一致
        array1 += array2
        print(array1)           //輸出結(jié)果 : ["張三", "李四", "王五", "馬六"]
        
        //事例2  (合并不同類型數(shù)據(jù))
        var array3 : [NSObject] = ["張三","李四","王五"]
        let array4 = ["馬六" , 100 ]
        
        //要合并不同類型的數(shù)據(jù)必須聲明 [NSObject] ,如果array4為array4: [String] 類型,則編譯不通過,必須兩個都為NSObject類型數(shù)組
        array3 += array4
        print(array3)           //輸出結(jié)果 : [張三, 李四, 王五, 馬六, 100]
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市红伦,隨后出現(xiàn)的幾起案子粹排,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件靠柑,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機坦刀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蔬咬,“玉大人求泰,你說我怎么就攤上這事〖坪校” “怎么了?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵芽丹,是天一觀的道長北启。 經(jīng)常有香客問我,道長拔第,這世上最難降的妖魔是什么咕村? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮蚊俺,結(jié)果婚禮上懈涛,老公的妹妹穿的比我還像新娘。我一直安慰自己泳猬,他們只是感情好批钠,可當(dāng)我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著得封,像睡著了一般埋心。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上忙上,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天拷呆,我揣著相機與錄音,去河邊找鬼疫粥。 笑死茬斧,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的梗逮。 我是一名探鬼主播项秉,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼慷彤!你這毒婦竟也來了伙狐?” 一聲冷哼從身側(cè)響起涮毫,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎贷屎,沒想到半個月后罢防,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡唉侄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年咒吐,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片属划。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡恬叹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出同眯,到底是詐尸還是另有隱情绽昼,我是刑警寧澤,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布须蜗,位于F島的核電站硅确,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏明肮。R本人自食惡果不足惜菱农,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望柿估。 院中可真熱鬧循未,春花似錦、人聲如沸秫舌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽足陨。三九已至羔味,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钠右,已是汗流浹背赋元。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留飒房,地道東北人搁凸。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像狠毯,于是被迫代替她去往敵國和親护糖。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,665評論 2 354

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