美文网首页
Swift5-外行零基础入门_8-集合(下)

Swift5-外行零基础入门_8-集合(下)

作者: DavidShawn | 来源:发表于2020-12-21 17:09 被阅读0次

集合的操作

这节,我们主要介绍如何操作这些数据组合。
操作任何数据,可以简单提炼为 增,删,改,查四个字。
关于,就是访问,上节我们已经说过了,本节主要讨论增,删,改
但是,具体到不同的类型,未必就分的很清楚,我们针对不同的组合类型分别讨论。

数组的操作

  • 组合
    两个数组可以直接拼接,这个操作有点像String。
var someNumbers = [1,2,3]
var moreNumbers = [2,3,4]
someNumbers + moreNumbers  // [1, 2, 3, 2, 3, 4]

因为数组可以重复,因此,两组数据合并了,且保留了重复的值和顺序。
我们还可以使用 += ,也能组合数据,效果相同,但是意义不同。
+是组合出一个新的数据,someNumbers本身并没有改变。而+=则是改变了someNumbers

  • 追加
    我们可以在一个数组的后面追加数据,使用.append(),将单个数据加在数组的最后。
var someNumbers = [1,2,3]
someNumbers.append(4)  // [1, 2, 3, 4]
  • 指定位置插值
    我们可以利用数组的下标,insert(_:at:),在指定某个索引位置之前插入数据。
var someNumbers = [1,2,3]
someNumbers.insert(5, at: 0)  // [5, 1, 2, 3] 在第一个位置,插入了5
  • 删除
    .append对应,我们使用.removeLast(),可以删除最后一项值。
var someNumbers = [1,2,3]
someNumbers.removeLast() 
someNumbers  // [1,2]

还可以删除指定位置的值,使用remove(at:)

var someNumbers = [1,2,3]
someNumbers.remove(at: 1)
someNumbers  // [1, 3]  删除了数组中的第二个值
  • 修改
    利用下标,指定某个位置或某段位置,赋值后,就覆盖了原数据,实现了修改
var someNumbers = [1,2,3]
someNumbers[0] = 5
someNumbers  // [5, 2, 3]

字典的操作

字典带有key,因此,可以通过指定key,实现插入数据,覆盖修改,删除等操作。

var stringDict = ["A":"sky","B":"river","C":"mountain"]
// 指定一个不存在的key,可以插入新的数据
stringDict["D"] = "road"
stringDict  // ["A": "sky", "B": "river", "D": "road", "C": "mountain"]
// 指定一个已经存在的key,可以修改value
stringDict["A"] = "house"
stringDict  // ["A": "house", "B": "river", "D": "road", "C": "mountain"]
// 将已经存在的key的value指定为nil,可以删除一条数据
stringDict["A"] = nil
stringDict  // ["B": "river", "D": "road", "C": "mountain"]

此外,字典也带有方法可以跟新和删除数据。updateValue(_:forKey:)removeValue(forKey:)

var stringDict = ["A":"sky","B":"river","C":"mountain"]
// 修改值
stringDict.updateValue("road", forKey: "C")
stringDict  // ["A": "sky", "B": "river", "C": "road"]
// 删除值
stringDict.removeValue(forKey: "A")
stringDict  // ["C": "road", "B": "river"]

集合的操作

因为集合是无序的,没有下标,因此insert插入一个值,是不用也无法指定位置的。

var setIntValues: Set = [1,2,3]
// 插入值
setIntValues.insert(4)
setIntValues  // {3, 4, 1, 2}

因为集合的无序性,我们可以指定要删除的值。

var setIntValues: Set = [1,2,3]
setIntValues.remove(1)
setIntValues

在集合中,还可以removeFirst(),removeAll(),但是要注意,First的值因为无序性,是会随机变化的。
最后,Set还有一个重要的概念
我们可以对不同的集合进行交集,并集,差集,对称差集等操作

// 定义一个新的集合
var newSet: Set = [2,3,4,5]
// intersection,交集,相交的部分
newSet.intersection(setIntValues) // 2,3
// union 并集,合并
newSet.union(setValues)  // 5, 2, 4, 3, 1
// subtracting 差集,与原集不同的部分
newSet.subtracting(setValues) //5, 4
// symmetricDifference,对称差集,与两个集不相交的部分
newSet.symmetricDifference(setValues) // 5, 1, 4

如果还是不理解的话,官方教程给我们提供了这样一张图:


setVennDiagram_2x.png

小结与预告

好了,讲到这里,我们其实都是在讨论静态的数据。可能你会感到有些无聊,但这些基础概念确实很重要,如果没有吃透,总有一天你会再回来的。
我们再来回顾下都学了什么。
首先,是基本数据类型,有无,数字,文字,判断值;然后,这些数据也可以组合的形式出现;最后,是对这些数据进行增删改查的操作。没错,你就学到了这么多。现在,把这三步放在你的脑海中回忆一下,再把细节放回去,是不是能扩充一下?
能不能在Playground中,按这三步的顺序,将主要的知识点体现在代码中?
从下节开始,我们开始学点更有意思的东西:流程控制。

相关文章

网友评论

      本文标题:Swift5-外行零基础入门_8-集合(下)

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