美文网首页《Swift3.0从入门到出家》——原创连载
5 数组 Swift/Object-C ——《Swift3.0从

5 数组 Swift/Object-C ——《Swift3.0从

作者: Demoer | 来源:发表于2016-09-21 21:10 被阅读341次

    5 数组 Swift/Object-C ——《Swift3.0从入门到出家》

    数组


    Swift中数组是一种数据结构,用来存放多个形同类型的数据结构,数据在数组内的存放是有序的,存进来的数据个读出来的顺序相同

    Object-C 中数组能够存放任意类型的数据类型为[AnyObject]


    Swift中数组有两种形式:

    可变数组:用var修饰,数组的内容及长度可以任意修改
    不可变数组:用let修饰,数组的内容及长度都不能修改

    Object-C 数组中也有两种形式

    不可变数组:
    let arr: NSArray = NSArray.init(objects: 10,”hello”,1.234)
    
    可变数组:
     let arr: NSMutableArray = NSMutableArray.init(capacity:0)
    
    将数组所有内容全部赋给另一个数组(用于表格、集合视图中)
    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 语句就是实现交换功能*
                if tmp_arr[j] < tmp_arr[j + 1] {
                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)
    
            }                
    
        }
    
    }
    

    拓展阅读

    相关文章

      网友评论

        本文标题:5 数组 Swift/Object-C ——《Swift3.0从

        本文链接:https://www.haomeiwen.com/subject/uigaettx.html