5 數組 Swift/Object-C ——《Swift3.0從入門到出家》

Swift中數組是一種數據結構,用來存放多個形同類型的數據結構,數據在數組內的存放是有序的,存進來的數據個讀出來的順序相同swift

Object-C 中數組可以存聽任意類型的數據類型爲[AnyObject]數組

 

Swift中數組有兩種形式:數據結構

可變數組:用var修飾,數組的內容及長度能夠任意修改app

不可變數組:用let修飾,數組的內容及長度都不能修改函數

Object-C 數組中也有兩種形式spa

不可變數組:let arr: NSArray = NSArray.init(objects: 10,」hello」,1.234)設計

可變數組: let arr: NSMutableArray = NSMutableArray.init(capacity:0)component

將數組全部內容所有賦給另外一個數組(用於表格、集合視圖中)對象

let arr = NSArray.init(array: arr1)排序

let arr = NSArray.init(object: arr1)

建立空數組(4種):

let arr: [Int]  = [Int]()

let arr: Array<String> = Array<String>()

let arr: [Double] = Array()

let arr: [Int] = []

使用簡單方法建立數組:

var arr:[Int] = [1,2,3,4,5,6]

 

指定元素個數和元素內容:

var arr = Array<Int>(count :2,repeatedValue: 100)

//[100,100]

指定元素內容:

var arr = Array(arrayLiteral:「Hello World」)

判斷數組中的元素是否爲空

if arr.isEmpty{

print(「空」)

}

 

if arr.count == 0{

print(「空」)

}

訪問數組的元素

根據下邊查找:下標從0開始,最後一個元素下標 = 數組中的元素個數 - 1

遍歷數組中的全部元素:

Swift:

for i in arr{

print(i)

}

for i in arr.count - 1{

print(arr[i])

}

Objective -C

for i in 0…arr.count - 1{

print(arr[i])

}

for i in arr{

print(i)

}

獲取指定範圍內的元素:

print(arr[0…2])

查找某個元素首次在數組中出現的位置:

if arr.contains(「Hello」){

print(arr.indexOf(「Hello」)!)

}

Objective - C:

if arr.containsObject(「Hello」){

print(arr.indexOfObject(「Hello」)) // 輸出的是索引的地址

}

Objective - C  獲取數組中第一個元素和最後一個元素

print(arr.firstObject)

print(arr.lastObject)

向數組中添加內容:

 

追加單個元素

arr.append(「Swift」)

Objective -C

arr.addObject(「Swift」)

追加整個數組

arr.appendContensOf([1,2,3,4,54])

 

Objective -C

arr.addObject([1,2,3,4,54])

使用加號追加新的內容

 

arr += [1,2,3,4,45]

 

向指定位置插入元素

 

arr.insert(「swift」,atIndex: 1) //插入單個元素

arr.insertContensOf([1,2,3,4], at : 0) //插入數組

Objective-C

arr.insertObject(「swift」,atIndex: 1)

經過下標區間插入元素

 

arr[0…2] = [1,」HELLO」,3]

刪除數組元素

arr.removeFirst() //刪除第一個元素

arr.removeLast() //刪除最後一個元素

Swift

arr.removeAtIndex(3) //刪除指定索引的元素

Objective-C

arr.removeObjectAtIndex()

Swift

arr.removeRange(0…4) //刪除必定範圍內的元素

Objective -C

arr.removeObjectInRange(NSRange.init(location:0,length: 1))

Swift

arr.removeAll() //清空整個數組

Objective -C

arr.removeAllObjects

Objective-C

arr.removeLastObject //刪除最後一個元素

if arr.containsObject(「123」){ //刪除指定元素,重複的會所有刪除

arr.removeObject(「123」)

}

修改數組中的內容

arr[4] = 「修改的內容」 //修改指定下標的元素

arr.replaceRange(0…3,with:[3]) //修改必定範圍內的元素

arr[0…3] = [1000,2000]

Objective -C

arr.replaceObjectAtIndex(0,withObject:」1234」)

 

數組排序

arr.sortInPlace //系統提供的排序函數,只能作升序

 

冒泡排序:

 

第一趟:0

    100,998,-10,50,1,30

    100,-10,998,50,1,30

    100,-10,50,998,1,30

    100,-10,50,1,998,30

    100,-10,50,1,30,998  ------ 998

 

第二趟:1

    -10,100,50,1,30,998

    -10,50,100,1,30,998

    -10,50,1,100,30,998

    -10,50,1,30,100,998  -------100

 

第三趟:2

    -10,50,1,30,100,998

    -10,1,50,30,100,998

    -10,1,30,50,100,998  -------50

 

第四趟:3

    -10,1,30,50,100,998

    -10,1,30,50,100,998  -------30

 

第五趟:4

    -10,1,30,50,100,998  -------1

//冒泡排序外層控制趟數內層控制每一趟比較的次數

for i in 0..<tmp_arr.count - 1{

//比較的趟數=元素的個數-1

    for j in  0..<tmp_arr.count - i - 1 {

         if tmp_arr[j] < tmp_arr[j + 1] {

//if 語句就是實現交換功能

let tmp = tmp_arr[j]

  //交換兩個數的大小 使用第三個變量作橋接

            tmp_arr[j] = tmp_arr[j + 1]

            tmp_arr[j + 1] = tmp

        }

    }

}

將數組中的元素用指定的字符進行拼接

let arr1:NSArray = [1,2,3,」china」,98.0]

let str1 = arr1.componentJoinedByString(「-」)

//str1 = 1-2-3-china-98.0

將字符串按照指定的字符串進行分割(分割的結果是一個數組)

var arr2: NSArray = str1.componentSeparatedByString(「-」)

交換數組中元素的顯示位置

arr.exchangeObjectAtIndex(0,withObjectAtIndex:2)

 

例子:

// 設計⼀個學生類,成員有姓名,年齡。 要求建立三個學生類對象,分別按年齡升序,名字降序進行排序

class Student {

    var name: String

    var age: Int

    

    init(name: String,age: Int) {

        self.name = name

        self.age = age

    }

}

let stu1 = Student.init(name: "stu1", age: 10)

let stu2 = Student.init(name: "stu2", age: 7)

let stu3 = Student.init(name: "stu11", age: 20)

 

let arrayStu = NSMutableArray.init(capacity: 0)

arrayStu.addObject(stu1)

arrayStu.addObject(stu2)

arrayStu.addObject(stu3)

 

for i in 0..<arrayStu.count - 1 {

 

    for j in 0..<arrayStu.count - 1 - i {

    

        var tmp1 = arrayStu[j] as! Student

        var tmp2 = arrayStu[j + 1] as! Student

        

        if tmp1.name < tmp2.name {

        

            arrayStu.exchangeObjectAtIndex(j, withObjectAtIndex: j + 1)

        }                

    }

}

相關文章
相關標籤/搜索