九、Swift3.0之數(shù)組的定義、遍歷、增刪改、容量以及合并

數(shù)組的定義,包含混合數(shù)組

    func demo() {
        //自動推到的結果是[String],表示數(shù)組中存放都是[String],這一點和OC中的數(shù)組制定泛型類似
        let array = ["張三","李四","王二"]
        print(array)
        
        //Swift中的基本數(shù)據類型不用包裝,OC中需要用包裝
        //自動推到類型為[Int]
        let array2 = [1,2,3,4,5]
        print(array2)
        
        //CG結構體
        let p = CGPoint(x: 10, y: 300)
        //自動推到類型為[CGPoint]
        let array3 = [p]
        print(array3)
        
        //混合數(shù)組:開發(fā)中幾乎不用
        //如果數(shù)組中的類型不一致,自動推到結果為[NSObject]
        //在Swift中還有一種類型[AnyObject]-->代表任意對象,比NSObject包含的范圍更廣。說明:在Swift中一個類可以沒有任何父類,所以會出現(xiàn)AnyObject
        //*** 在混合的數(shù)組中,CG結構體需要包裝,如果不是混合類型數(shù)組就不用包裝
        let point = CGPoint(x: 10, y: 300)
        let array4 = ["張三",1,NSValue(cgPoint:point)] as [Any]
        print(array4)
    }

數(shù)組的六種遍歷方式,包含倒序遍歷兩種方式。

func demo() {
        let array = ["張三","李四","王二"]
        //1、按照下標遍歷
        for i in 0..<array.count {
            print(array[i])
        }
        //2、按照元素遍歷
        for s in array{
            print(s)
        }
        //3、enum block,同時遍歷下標和元素
        for e in array.enumerated() {
            //這個e是一個元組,里面包含offset(下標)   element(內容)
            print("\(e.offset)\(e.element)")
        }
        //4、遍歷下標和內容之二
        for(n,s) in array.enumerated(){
            //n是索引   s是n索引對應的元素,其中n和s可以隨意寫
            print("\(n) \(s)")
        }
        //5、倒序遍歷
        for s in array.reversed(){
            print(s)
        }
        //6、倒序索引和元素遍歷
        //這是正確的,下面的第二個是錯誤的。應該先枚舉在倒序
        for (n,s) in array.enumerated().reversed(){
            print("\(n)\(s)")
        }
        //這是錯誤的
        //for (n,s) in array.reversed().enumerated(){
        //    print("\(n)\(s)")
        //}
    }

數(shù)組的增刪改操作。

func demo() {
        var arr = ["張三","李四","王二"]
        //增
        arr.append("老王")
        arr.insert("你好", at: 0)
        print(arr)
        
        //改
        arr[0] = "小王"
        print(arr)
        
        //刪
        arr.remove(at: 4)
        print(arr)
        //刪除全部,并且保存空間
        arr.removeAll(keepingCapacity: true)
    }

數(shù)組的容量。

func demo() {
        //定義一個數(shù)組,制定類型存放[Int]的數(shù)組  但是沒有初始化
        var array: [Int]
        //給數(shù)組初始化
        array = [Int]()
        
        //以上兩句可以合并寫成一句
        var array2 = [Int]()
        print("初始容量\(array2.capacity)")
        for i in 0..<8{
            array2.append(i)
            //容量不夠使用的時候,每次增加之前容量的一倍,這樣可以避免每次增加數(shù)據時都開辟空間
            print("\(array2)容量\(array2.capacity)")
        }
    }

數(shù)組的合并。

 func demo() {
        //常規(guī)數(shù)組合并
        var arr = ["張三","李四","王二"]
        let arr2 = ["小王","1"]
        arr += arr2;
        print(arr)
        
        //注意:要合并的兩個數(shù)組的類型必須要一致。如下是一種錯誤的寫法:
//        var arr3 = ["張三","李四","王二"]
//        let arr4 = ["小王","1",100]
//        arr3 += arr4;
//        print(arr3)
        //正確的寫法如下
        var arr3: [NSObject] = ["張三" as NSObject,"李四" as NSObject,"王二" as NSObject]
        let arr4: [NSObject] = ["小王" as NSObject,"1" as NSObject,100 as NSObject]
        arr3 += arr4;
        print(arr3)
    }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容