加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

图书连载15:数组

发布时间:2020-12-14 06:28:50 所属栏目:百科 来源:网络整理
导读:3.4.1 数组 所谓数组,就是将相同数据类型的元素,按一定顺序进行排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分它们的变量集合,这个名字被称为数组名,编号称为数组的下标。 组成数组的各个变量称为数组的分量,也称为数组的元素

3.4.1 数组

所谓数组,就是将相同数据类型的元素,按一定顺序进行排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分它们的变量集合,这个名字被称为数组名,编号称为数组的下标。

组成数组的各个变量称为数组的分量,也称为数组的元素,有时也被称为下标变量。Swift数组是在程序设计中,为了处理方便,把具有相同类型的若干变量,按有序的形式组织起来的一种形式,这些按序排列的同类数据元素的集合称为Swift数组。

Swift 数组对存储数据有具体要求。不同于Object-C的NSArray和NSMutableArray类,它们可以存储任何类型的实例,而且不提供他们返回对象的任何本质信息。

数组的创建

在Swift中,数据值在被存储进入某个数组之前,数据的类型必须明确,方法是通过显式的类型标注或类型推断:

1     let stringArray =Array<String>()
2     let floatArray = [Float]()
3     let intArry = [1,2,3,4,5]

在第一行代码中,通过使用命名型类型Array<SomeType>,创建了一个字符串类型的数组,其中SomeType是这个数组中唯一允许存在的数据类型。

在第二行代码中,我们使用了像SomeType[]这样的简单语法,创建了一个类型为浮点数的数组floatArray。

前面两种方法都是通过显示的类型标注,创建指定类型的数组。在第三行代码中,通过给常量设置默认值,从而由Swift对其类型作出推断。因为所有值都是整数类型,所以数组的类型被推断为整型数组。


数组的访问和查找

数组中元素的访问,是通过下标语法实现的:

1     let stringArray =Array<String>()
2     let floatArray = [Float]()
3     let intArry = [1,5]

通过使用数组的只读属性count和isEmpty,可以获取数组中的元素数量:

1     intArry.isEmpty                               //判断数组是否为空,结果为:false
2     intArry.count                                  //获得数组中元素的数量,结果为:5


通过使用数组的contains()方法,可以判断数组中是否存在某个元素:

1     intArry.contains(3)                         //判断数组中是否存在3,结果为:true

数组的编辑

在Swift中,您可以使用数组的append()方法,或者直接使用加号+,往已有的数组中添加新的元素:

1     var intArry = [1,5]
2     intArry += [6]                                  //intArray的元素:[1,5,6]
3     intArry.append(7)                          //intArray的元素:[1,6,7]

如果需要在数组的中间的位置添加新的元素,可以使用insert()方法,新的元素将被插入到数组中指定的index位置,该位置原来的元素将依次右移:

1     intArry.insert(100,at: 2)                 // intArray的元素:[1,100,7]

在Swift中修改数组中的某个元素,也是非常简单的。首先使用下标定位到需要修改的元素,然后直接给元素指定新的值即可:

1     intArry[2] = 9                                   // intArray的元素:[1,9,7]

使用这种方式,甚至可以一次性同时修改数组中的多个元素的值:

1     intArry[3...5] = [8,8,8]                   // intArray的元素:[1,7]

Swift数组提供了几种remove方法,用来删除数组中的元素:

1     intArry.removeFirst()                               // intArray的元素:[2,7]
2     intArry.removeLast()                               // intArray的元素:[2,6]
3     intArry. remove(at: 2)                              //intArray的元素:[2,6]
4     intArry.removeSubrange(Range(1..<3))        // intArray的元素:[2,6]
5     intArry.removeAll()                                  // intArray的元素:[]
 

数组的排序

相对于Object-C语言来说,在Swift中对数组进行排序变得极为简单:

1     var intArry = [11,22,14,25]
2     print(intArry.sort())                                  // 输出的结果:[3,11,25]
 

sort()方法默认是按升序进行排列,如果想按照降序对数组进行排列:

1     intArry.sort(isOrderedBefore:>)            // 输出的结果:[25,3]

对拥有复杂类型元素的数组进行排序,也是非常简单的,在下面的例子中,创建了一个包含三个元组对应的数组,并且按照元组中姓名的升序进行排列:

1     var userList = [(name: "Thomas",age: 20),(name: "John",age: 32),(name: " Bill",age: 28)]
2   userList.sort(isOrderedBefore:{$0.name > $1.name})
userList排序后的结果为:[("Bill",28),("John",32),("Thomas",20)]。




3.4.2 多维数组

多维数组是指在数组中,仍然存在其它的数组。

您可以将多维数组理解为,通过几次索引可以找到存储的值就为几维数组,例如在一维数组userList中,通过一个索引值userList [0],就可以查到第一个用户。在二维数组userList2,就需要两次索引userList [0][0],才可以查到第一个用户。

多维数组的创建,与一维数组类似,以下代码定义了一个包含整数元素的二维数组:

1     var intArray = [[Int]]()
 

同样可以通过指定初始值的方法,创建一个多维数组:

1     let numbers = [[1,3],[4,7]]

和一维数组一样,可以使用append()方法,往多维数组中添加更多的数组元素:

1     var numbers = [[1,7]]
2     numbers.append([8,10])                      //numbers的元素:[[1,7],[8,10]]

那么如何获取多维数组中的元素呢?假如您需要获得numbers数组中的8这个数字,首先通过numbers[2]获得[8,10]数组,然后通过numbers[2][0]获得[8,10]数组中的第一个元素。

即通过numbers[2][0]获得第三个子数组中的第一个元素:8。




3.4.3 数组的遍历

在下面的代码中,使用..<符号,遍历数组从0至4之间的所有元素:

1     var numbers = [1,5]
2     for index in 0 ..<numbers.count
3     {
4         print(numbers[index])
5     }
 

数组的遍历其实可以更加简单:

1     var numbers = [1,5]
2     for num in numbers
3     {
4         print(num)
5     }

如果仅需遍历指定范围内的数组元素,可以通过定义Range的方法来实现:

1     var numbers = [1,5]
2     let range = 2..<numbers.count
3     for (index,value) inzip(range,numbers[range])
4     {
5               print("(index): (value)")
6     }

对于包含复杂元素的数组进行遍历,也是非常简单的事情:

1     let scores =["Jerry":78,"Thomas":88,"John":92]
2     for (student,score) in scores
3     {
4         print(student + "' score is(score)")
5     }

通过for-in语句,也能很方便地实现对多维数组的遍历:

1     var numbers = [[1,7]]
2     for subNumbers in numbers
3     {
4         for number in subNumbers
5         {
6             print(number)
7         }
8     }


一个人写书,难免会有不足和纰漏,欢迎大家通过这个邮箱:coolketang@163.com

将你的意见和建议告诉我们,感谢!

关注我的微信公众号“酷课堂”,获取更多学习资源,欢迎留言交流。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读