Swift5-外行零基础入门_7-集合(上)

2020-12-21  本文已影响0人  DavidShawn

集合

什么是集合?

我们之前介绍了数据类型,每个数据类型中往往包含是单条数据。其实,多条数据也可以组合的形式出现。这种组合起来的数据,就叫做集合。
那么,有哪些组合的形式呢?

数据的组合形式

数据的组合形式有三种:数组Array,集合Set,字典Dictionary

这里也有个集合,不是我们本节标题中说的那个集合。我们后面用数据组合这样的描述性语言来避免混淆。

  • 术语,英语叫做jargon,也叫黑话,通常是流行在特定的人群之间的简便用语。除了可以提高沟通效率,还能有效隔绝并分辨另外的群体。
  • 我们在学习编程的时候,会不断碰到各种术语。对老手来说,术语表达的意思更精确,沟通的效率也更高,但是对于新手,简直是噩梦。更糟糕的是,术语抬高了入门的门槛。
  • 我争取把这些术语都翻译成白话。

观察这三种形式,都是用中括号,将多个数据包起来,中间用逗号连接。其中,字典稍微特殊些,每条数据中间是冒号,成对出现。
既然数据能组合,而且有三种形式,它们一定都有自己的特点。比如,如何进行创建,访问,操作。

创建组合

与创建常量和变量的方法类似,我们来创建一些组合。

我们总结一下如何创建一个组合的数据:
创建数组:var someNumberA = [1,2,3],创建集合:var setValues: Set = [1,2,3],创建字典:var intStringDict = [1:"A",2:"B",3:"C"]
组合的一些共有特性:

  1. 组合中的数据类型要一致;
  2. 常量组合不能修改,变量组合可以;

访问组合

创建出组合后,我们先看看如何访问它们。

var arrayNumbers = [1,2,3,4]             // 定义一个数组
var setValues: Set = [1,2,3]                 // 定义一个集合
var intStringDict = [1:"A",2:"B"]      // 定义一个字典
// 他们都有count方法,用.count调用
arrayNumbers.count //4
setValues.count //3
intStringDict.count //2
  1. 遍历数组
var arrayNumbers = [1,2,3]
for i in arrayNumbers {
    print(i)
}
// 1,2,3
  1. 遍历集合
    这里就体现了集合与数组的不同,集合是无序的,因此在打印遍历的结果时,排列的顺序是随机的,你可以在Playground中试一下。
var setValues: Set = [1,2,3]
for i in setValues {
    print(i)
}
// 每次运行,结果顺序会随机变化
  1. 遍历字典
    字典有一对值,它们被称作keys: values。如果调用.keys或.values,可以得到一组数组形式的数据。
var intStringDict = [1:"A",2:"B",3:"C"]
print(intStringDict.keys)  // 1,3,2 一组无序的值

你可以单独遍历出key,可以单独遍历出value,也可以同时遍历出key: value

var intStringDict = [1:"A",2:"B",3:"C"]
// 遍历字典中的keys
for key in intStringDict.keys {
    print(key)
}
// 遍历字典中的values
for value in intStringDict.values {
    print(value)
}
// 同时遍历key和value
for (key,value) in intStringDict {
    print(key, value)
}

字典也是无序的,多次运行,我们可以发现,它的遍历结果排列顺序也是随机的。

  1. 数组
    数组是有序的,有默认的下标。任何一个数组,从第一个数据开始数,数到最后一个数据。数的时候,要从零开始,每个数据分别对应着0,1,2,3...。因此,我们可以通过指定下标值,访问到想要访问的数据。
var arrayNumbers = [1,2,3,4,5]
arrayNumbers[0] // 1
arrayNumbers[2] // 3
// 还可以按范围读取
arrayNumbers[0...3]  // [1, 2, 3, 4] 注意这里返回的是一个数组
  1. 字典
    字典是无序的,没有下标,但是有key,我们可以通过key访问value。
var stringStringDict  = ["A":"sky","B":"river","C":"mountain"]
stringStringDict["A"]  // "sky"
stringStringDict["C"]  // "mountain"
  1. 集合
    集合是无序的,没有下标,也没有Key,因此,无法访问具体的指定数据。
    但是集合有自己特殊方法,比如排序,包含判断。
// 排序
setIntValues.sorted()  // 返回了一个从小到大排序的有序数组
setStringValues.sorted()  //同样返回一个有序数组

// 包含判断 contains
setIntValues.contains(1) // true
setStringValues.contains("D") // false

小结与预告

本节我们介绍了数据组合的三种形式:数组Array,集合Set,字典Dictionary
如何创建他们,如何访问他们等,讲到这里,内容已经有点多,我们暂且休息一下。
有疑惑的地方,你可以试着在playground上面多敲一些代码试试。
下节,我们继续介绍如何操作这些数据组合。

上一篇 下一篇

猜你喜欢

热点阅读