Swift编程入门(10)集合

2018/12/20 21:18 下午 posted in  Swift入门

Swift提供的第三种容器类型是集合(set)。集合是一组互不相同的实例的无序组合。这个定义将其与数组区别开来,后者是有序的,并且可以容纳重复的值。

创建集合

import Cocoa 
var groceryBag = Set<String>() 

我们创建了一个Set实例,声明其持有String。

我们用用insert(_:)方法可以往这个集合里添加一些数据

groceryBag.insert("Apples") 
groceryBag.insert("Oranges") 
groceryBag.insert("Pineapple") 

遍历集合

for food in groceryBag { 
    print(food) 
} 

新的创建集合

var groceryBag = Set(["Apples", "Oranges", "Pineapple"]) 
var groceryBag: Set = ["Apples", "Oranges", "Pineapple"] 

运用集合

Set类型提供了contains(_:)方法来查看其内部是否有某个特殊的元素

let hasBananas = groceryBag.contains("Bananas") 

hasBananas的值为假,你的groceryBag里面没有香蕉。

合并

let friendsGroceryBag = Set(["Bananas", "Cereal", "Milk", "Oranges"]) 
let commonGroceryBag = groceryBag.union(friendsGroceryBag) 

这段代码增加了一个新的Set常量来表示你朋友的食品袋,并且用union(_:)方法把两个集合合并起来。union(_:)是Set类型的一个方法,接受一个SequenceType参数,并返回一个新的Set实例。该实例包含了两个容器中去重后的元素。简单地说,你可以把字典和集合传给union(_:)并得到一个包含合并后元素的集合,不会有重复。

交集

let roommatesGroceryBag = Set(["Apples", "Bananas", "Cereal","Toothpaste"]) 
let itemsToReturn = commonGroceryBag.intersection(roommatesGroceryBag) 

集合提供了intersection(_:)方法来找出同时存在于两个容器中的元素,并用一个新的Set实例返回这些重复的元素。图11-2用韦恩图的形式说明了这种关系。你室友的食品袋和你的有几样重复,不过不是所有都重复。

不相交

let yourSecondBag = Set(["Berries", "Yogurt"]) 
let roommatesSecondBag = Set(["Grapes", "Honey"]) 
let disjoint = yourSecondBag.isDisjoint(with: roommatesSecondBag) 

根据是否有集合(如yourSecondBag)的任何成员出现在作为参数提供给isDisjoint的序列(如roommatesSecondBag)中,Set的isDisjoint(with:)方法会返回真或假。