美文网首页
Swift学习系列 数组

Swift学习系列 数组

作者: Mr_Lxh | 来源:发表于2019-12-13 13:32 被阅读0次

    一、数组的基本操作

    数组元素的基本操作

    1、数组的定义

    Swift中的数组跟OC类似 分为可变数组和不可变数组。数据类型为Array。可变数组用var来修饰 不可变数组用let来修饰。举个例子,我们定义一个含有三个元素的不可变数组,代码如下:

    let array:Array = [1,2,3]
    print(array)
    

    输出结果为:[1,2,3]

    定义一个可变数组,只需要把let变为var 即可

    var array:Array = [1,2,3]
    print(array)
    

    输出结果为:[1,2,3]

    2、数组元素的基本操作

    • 增(追加、插入、+)

    如果我们想要在数组末尾追加一个元素,需要用到array.append(元素)。

      //array 追加
       var array1:Array = [1,2,3]
       array1.append(4)
       print(array1)
    

    输出结果为:[1, 2, 3, 4]

    上边的例子给出的是追加相同类型的元素的例子。如果我想在末尾追加一个不同类型的元素,应该怎么操作呢?
    我们只需要将 Array类型 变为 [Any] ,这里[Any]代表一个数组,元素可以是任意类型。

     //array  追加任意类型
     var array2:[Any] = [1,2,3]
     array2.append(4.3)
    print(array2)
    

    输出结果为:[1, 2, 3, 4.3]

    如果我们想要在任意位置添加元素,明显上述的操作就无法满足需求了,这时候我们就用到了array的另一个语法array.insert(element,at:index) 这句话 表示 我们要在array的某个索引添加一个元素。示例如下:

     //插入
     array2.insert(22, at: 0)   
     print(array2)
    

    输出结果为:[22, 1, 2, 3, 4.3]

    通过上述的两个语法。我们能对一个array进行任意位置的增操作。那如果我们需要对两个array进行操作呢。OC中我们经常用到的是 addObjectFromArray ,在swift中我们可以使用更简单的操作方法 “+” 举个例子:

     //"123" + "abc"
            
      let array3 = array2 + [2,3,4]
      print(array3)
    

    输出结果为:[22, 1, 2, 3, 4.3, 2, 3, 4]

    这里需要注意:swift中对于类型管控非常严格,+方法 要求前后类型一致。也就是说Array的类型必须是相同类型才能相加


    • 关于删除,在文章开始的思维导图中已经罗列出了,这里简单的以几个例子来演示一下:

    删除所有

     array.removeAll()  //删除所有
     array.removeAll(keepingCapacity: YES) //删除所有元素  保留容量空间
     
    

    删除第一个/最后一个元素

    array.removeFirst()//删除第一个元素
    array.removeLast()//删除最后一个元素
    

    删除前几个/后几个元素

     array = [1,2,3,4,5]
     array.removeFirst(2)//删除从前面数2个
     print(array)
     array.removeLast(2)//删除最后面的两个元素
     print(array)      
    

    删除区间内元素

    array = [1,2,3,4,5]
            
    array.removeSubrange(1...3)//删除 区间1...3的元素
            
    print(array)
    

    数组的其他操作

    数组的其他操作

    1、求数组元素个数 数组容量

     //数组个数  容量
     var array = [1,2,3]
     print(array.count)
     print(array.capacity)
    

    输出结果为:3,3

    这里定义的是一个含有三个元素的数组。初始容量为三。如果这个数组再增加一个元素。比如我们这样操作:

    array.append(4)
     print(array.count)
     print(array.capacity)
    

    输出结果为:4,6
    这里关于容量有这样一个规律 :

    if count>capacity {
    capacity = 2 * (count - 1)
    }
    
    

    这里简单的用一段伪代码来表示count 和 capacity 之间的关系。如果count的数量 小于出事分配到的容量 容量不会发生改变 当count大于容量时 容量自动扩容为 未添加元素之前的数组容量的2倍。这样做的目的在于尽可能的少占用空间

    2、数组遍历

    • 遍历索引 拿到元素
        //数组遍历 遍历索引
         for i in 0..<array.count {      
         print(array[I])
         }
    
    • 遍历元素 拿到元素
        //数组遍历  遍历元素 拿到元素
        for value in array {
          print(value)
        }     
    
    • 遍历区间 拿到元素
        //数组遍历  遍历区间 拿到元素
         for value in array[0...4] {
           print(value)
         }      
    
    • 转化为OC 方式遍历 拿到元素和索引
     //数组遍历
        (array as NSArray).enumerateObjects { (value, idx,stop) in
                
         print(value,idx)
         }
    
    • 遍历元组 拿到元素和索引
    //数组遍历  遍历元组  拿到索引和值
     for (index,value) in array.enumerated(){
                
         print (index,value)
         
     }
            
    

    3、数组合并

    数组合并的话,要注意:只有相同类型的数组才能够合并。
    比如我们想让两个数组相加。+ 号左右数组类型要相同

    //数组合并
        let array1:[Any] = [8,8,8]
        let array2:[Any] = [1,2,3]
        print(array1 + array2)
    
    

    输出结果为:[8,8,8,1,2,3]

    三、总结

    数组

    相关文章

      网友评论

          本文标题:Swift学习系列 数组

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