swift-集合类型01-数组的基本操作

import UIKit


class ViewController: UIViewController {

  

  override func viewDidLoad() {

    super.viewDidLoad()

    

    /**

     数组是一系列相同类型的数据集合,存储相同类型的可重复的有序的多个数据。

     

     Swift 数组存储特定类型的值。不同于Objective - C NSArray NSMutableArray 类:

     它们可以存储任何类型的对象,而且不提供对象的本质任何信息。

     

     Swift中,数组存储的数据值的类型必须是明确的,通过显式类型注释,或通过类型推断来保证,

     而且没必要非是 class 类型。

     例如:如果创建一个 Int 类型的数组,就不能向其中加入不是Int类型的任何数据。

     Swift 数组是类型安全的,我们必须清楚数组中存储的类型

     

     Swift 数组语法形式:Array<SomeType>,或者简写为 SomeType[]

     其中 SomeType 表示数组存储的数据类型。

     两种形式在功能上是一样的,但是推荐使用 SomeType[] 种写法,在本文中都会使用这种形式来

     */

    let a :Array<Int> = [1,2,3,1]

    print(a)

    

    var shopList :Array<String> = ["eggs","milk","potato"]

    print(shopList)

    

    /*

    shopList 数组被声明为变量(var关键字)而不是常量(let关键字)

    所以 shopList 可能会被加入其他数据

    由于 Swift 的类型推断机制,我们不必把数组的类型定义的很清楚。

    所以 shoplist 的构造也可以这样写

    var shopList = ["Eggs", "Milk"]

    因为所有值都是相同的类型(String),Swift 可以推断出 shoplist String类型数组

    */

    let people : Array<String> = ["male","female"]

    print(people)

    

    //可以使用数组的只读属性 count 来获取数组中的元素的数量

    print("people count == \(people.count)")

    

    //使用 isEmpty属性(返回Bool值)检查 count 属性的值是否为 0

    if people.isEmpty {

      

      print("people is nil")

      

    } else {

      

      print("people is not nil")

      

    }

    

    //使用 append 方法在数组尾部增加新的元素:

    shopList.append("apple")

    print(shopList)

    

    //直接使用下标语法来获取数组中的元素

    //第一个元素在数组中的索引值是 0 而不是 1  

    //Swift 中的数组索引总是从零开始,与OC一样

    let first = shopList[0]

    let last = shopList.last

    print("first is \(first) and last is \(last)")

    

    

    /**

    通过下标改变一系列数据值,即使新数据的数量和原有数据的数量是不一样的

    不能使用下标语法在数组尾部添加新元素。

    如果我们试着用这种方法对越界的索引数据进行访问或者设置新值,会引发一个运行时错误。

    可以通过对索引值和数组的 count 进行比较来检查某个索引是否有效。

    除了当 count = 0 时(说明这是个空数组),最大的索引值一直是 count - 1

    */

    

    //MARK: [1...3]= ["bananas","pich"] 

    //  意思是从数组的第二个元素和第四个元素之间有 ["bananas","pich"]来代替

    //第二个数组不能超过数组的个数 否则会报错

    shopList [1...3] = ["bananas","pich"]

    print(shopList)

    //["eggs", "bananas", "pich"]

    

    //使用数组的 insert (atIndex:) 方法在 atIndex 之前添加元素:

    shopList.insert("chicken", atIndex: 0)

    print(shopList)

    

    //使用 removeAtIndex 方法来移除数组中的某一项。

    //这个方法把数组在索引位置存储的元素移除,并返回这个被移除的元素

    //元素移除后数组中的空出项会被自动填补,所以现在索引值为2的元素的值是pich

    let shopList2 = shopList.removeAtIndex(2)

    print(shopList2)

    

    print(shopList)

    

    /**

    如果只想把数组中的最后一项移除,使用 removeLast 方法而不是 removeAtIndex 方法来避免获取数组的count属性。

    removeLast 也会返回被移除的数据项

    */

    

    

    //使用 for-in 循环遍历数组中所有元素

    for string in shopList {

      

      print(string)

      

    }

    //如果同时需要每个元素的值和索引值,可以使用属性 enumerate 来进行数组遍历。

    //enumerate 返回一个由元素索引值和数据值组成的键值对。

    //我们可以把这个键值对分解成临时常量或者变量来进行遍历

    

    for (index,value) in shopList.enumerate() {

      

      print("string \(index +  1) == \(value)")

      

    }

    

    //使用构造器创建一个特定数据类型的空数组

    //someInts 被设置为变量类型是 Int 的数组

    

    let array2 = [String]()

    print("array2 == \(array2)")

    

    

    let someInt:Array<Int> = []

    print("someInt has \(someInt.count) items")

    

    var array1 = [1,2,3]

    //这个还可以清空数组

    array1 = []

    print("array1 has \(array1.count) items")

    

    //数组还提供了创建特定大小并且元素被同时初始化的构造器。

    //把数组的元素数量 count 和初始值 repeatedValue 传入数组即可

    let three1 = Array(count: 3, repeatedValue: 1.1)

    print(three1)

    

    let three2 = Array(count: 3, repeatedValue: 2.1)

    print(three2)

    

    /// 使用加法操作符 + 来合并两种相同类型的数组

    let six1 = three1 + three2

    print(six1)

  }

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值