1. 创建和初始化一个空的set

var letters = Set<Character>()

或者,如果上下文已经提供了类型信息,例如函数参数或已输入的变量或常量,则可以创建空的集合,其中包含空数组文本:

letters.insert("a")
// letters now contains 1 value of type Character
letters = []
// letters is now an empty set, but is still of type Set<Character>

2.创建一个带有数组literal的集合

var favoriteGenres: Set<String> = ["Rock", "Classical", "Hip hop"]

集合类型不能仅从数组文字推断,因此类型集必须显式声明。然而,因为Swift类型推断,如果你用一个相同类型的数组值去初始化集合时,不需要对集合设置类型。例如上面的那个例子,可以写成如下:

var favoriteGenres: Set = ["Rock", "Classical", "Hip hop"]

3.获取和修改集合的值

你可以通过set的相关方法和属性来修改和获取到集合的值

<1>用 只读属性 count来获取一个集合的个数

print("I have \(favoriteGenres.count) favorite music genres.")
// Prints "I have 3 favorite music genres."

<2> 用 isEmpty这个布尔值的属性来检查 count这个属性的值是否等于0

if favoriteGenres.isEmpty {
print("As far as music goes, I'm not picky.")
} else {
print("I have particular music preferences.")
}

<3>你可以调用insert(:)这个方法来对集合插入一个新的值

favoriteGenres.insert("Jazz")

<4>你可以用 remove(:)这个方法删除集合中的某个值,如果这个值存在的话,返回删除后的值,如果不存在的话,返回nil。调用removeAll(), 可以删除集合中的全部元素;用contains(_:)判断是否包含某个值

if let removedGenre = favoriteGenres.remove("Rock") {
print("\(removedGenre)? I'm over it.")
} else {
print("I never much cared for that.")
}
// Prints "Rock? I'm over it."
if favoriteGenres.contains("Funk") {
print("I get up on the good foot.")
} else {
print("It's too funky in here.")
}
// Prints "It's too funky in here."

<5>用for-in 来遍历一个集合的值

for genre in favoriteGenres {
print("\(genre)")
}
// Jazz
// Hip hop
// Classical

在Swift中,Set类型是无序的,如果想按顺序遍历集合,用sorted()方法排序,该方法 按照从小到大的顺序排列后,以一个数组为元素返回。

for genre in favoriteGenres.sorted() {
print("\(genre)")
}
// Classical
// Hip hop
// Jazz

4.操作类型的集合

你可以有效地执行基本的集合操作,例如将两个集合组合在一起,确定两个集合有共同的值,或者确定两个集合是否包含了所有的、一些或者没有相同的值。

调用intersection(_:)方法用两个集合的相同元素生成一个新的集合;

调用symmetricDifference(_:)方法表示:用两个集合中的不同元素生成一个新的集合;

调用union(_:)方法表示:用两个集合的全部元素生成一个集合(该集合中,相同的值只保留一个)

调用subtracting(_:)方法表示:去除集合a中与集合b中相同的元素,生成一个新的集合

let oddDigits: Set = [1, 3, 5, 7, 9]
let evenDigits: Set = [0, 2, 4, 6, 8]
let singleDigitPrimeNumbers: Set = [2, 3, 5, 7] oddDigits.union(evenDigits).sorted()
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
oddDigits.intersection(evenDigits).sorted()
// []
oddDigits.subtracting(singleDigitPrimeNumbers).sorted()
// [1, 9]
oddDigits.symmetricDifference(singleDigitPrimeNumbers).sorted()
// [1, 2, 9]

5.集合间的元素关系与相等

用“==”号判断两个集合的值是否一致;

用isSubset(of:)方法判断集合中的所有值是否包含在指定集合中;

用isSuperset(of:)方法判断一个集合是否包含指定集合中的所有值;

用 isStrictSubset(of:) or isStrictSuperset(of:)方法判断一个集合是否是指定集合的子集合或父集合;

用 isDisjoint(with:)方法来判断两个集合是否没有共同值;

let houseAnimals: Set = ["												

Swift--Set的了解的更多相关文章

  1. iOS代码规范(OC和Swift)

    下面说下iOS的代码规范问题,如果大家觉得还不错,可以直接用到项目中,有不同意见 可以在下面讨论下. 相信很多人工作中最烦的就是代码不规范,命名不规范,曾经见过一个VC里有3个按钮被命名为button ...

  2. Swift与C#的基础语法比较

    背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...

  3. iOS开发系列--Swift语言

    概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...

  4. 算法与数据结构(十七) 基数排序(Swift 3.0版)

    前面几篇博客我们已经陆陆续续的为大家介绍了7种排序方式,今天博客的主题依然与排序算法相关.今天这篇博客就来聊聊基数排序,基数排序算法是不稳定的排序算法,在排序数字较小的情况下,基数排序算法的效率还是比 ...

  5. 算法与数据结构(十五) 归并排序(Swift 3.0版)

    上篇博客我们主要聊了堆排序的相关内容,本篇博客,我们就来聊一下归并排序的相关内容.归并排序主要用了分治法的思想,在归并排序中,将我们需要排序的数组进行拆分,将其拆分的足够小.当拆分的数组中只有一个元素 ...

  6. Swift enum(枚举)使用范例

    //: Playground - noun: a place where people can play import UIKit var str = "Hello, playground& ...

  7. swift开发新项目总结

    新项目用swift3.0开发,现在基本一个月,来总结一下遇到的问题及解决方案   1,在确定新项目用swift后,第一个考虑的问题是用纯swift呢?还是用swift跟OC混编      考虑到新项目 ...

  8. swift 中关于open ,public ,fileprivate,private ,internal,修饰的说明

    关于 swift 中的open ,public ,fileprivate,private, internal的区别 以下按照修饰关键字的访问约束范围 从约束的限定范围大到小的排序进行说明 open,p ...

  9. 【swift】BlockOperation和GCD实用代码块

    //BlockOperation // // ViewController.swift import UIKit class ViewController: UIViewController { @I ...

  10. iOS开发系列--Swift 3.0

    概述 从写第一篇Swift文章的时候到现在Swift已经从1.2发展到了今天的3.0,这期间由于Swift目前还在发展阶段并不能向下兼容,因此第一篇文章中的部分代码在当前的Xcode环境中已经无法运行 ...

随机推荐

  1. Koa--基于Node.js平台的下一代web开发框架的安装

    koa 是由 Express 原班人马打造的,致力于成为一个更小.更富有表现力.更健壮的 Web 框架. 使用 koa 编写 web 应用,通过组合不同的 generator,可以免除重复繁琐的回调函 ...

  2. 工作中Docker使用命令笔记

    docker安装与启动 安装docker [root@localhost /]# yum -y install docker-io 更改配置文件 [root@localhost /]# vi /etc ...

  3. ie 导出不行,不兼容问题,或只出现后缀文件无法识别

    // 下载模板 @RequestMapping("/download") @ResponseBody public ResponseEntity<byte[]> dow ...

  4. 数据库系统概论(2)——Chap. 2 关系数据库基础

    数据库系统概论(2)--Chap.2 关系数据库基础 一.关系数据结构及形式化定义 1.关系 关系模型的数据结构只包含单一的数据结构--关系.在关系模型中,现实世界的实体及实体间的各种联系均用单一的结 ...

  5. 使用python书写的小说爬虫

    1.写了一个简单的网络爬虫 初期1 (后期将会继续完善) #小说的爬取 import requests import random from bs4 import BeautifulSoup base ...

  6. how to use Hexo

    Hexo is a good tool to build a personal blog.Here are some good reference:1: https://hexo.io/zh-cn/d ...

  7. MPP(大规模并行处理)简介

    1. 什么是MPP? MPP (Massively Parallel Processing),即大规模并行处理,在数据库非共享集群中,每个节点都有独立的磁盘存储系统和内存系统,业务数据根据数据库模型和 ...

  8. 有n个整数,使其前面各数顺序向后移n-m个位置,最后m个数变成最前面的m个数

    题目:有n个整数,使其前面各数顺序向后移n-m个位置,最后m个数变成最前面的m个数 public class 第三十六题数组向后移m个位置 { public static void main(Stri ...

  9. HLS协议详解

    1. HLS HLS是为移动设备开发的基于HTTP的流媒体解决方案. 2. 原理: 将视频或流切分成小片(TS), 并建立索引(M3U8). 支持视频流:H.264: 音频流:AAC 3. M3U8文 ...

  10. git命令使用(二)

    上次写的git命令,基本上能够支持一个项目的基本运行了,但是git不是就那几个命令还有一些其他的命令,来看一下 创建一个文件夹,想在这个文件夹下创建项目,就执行这个命令就行 $ git init 里面 ...