Swift 集合类型(Collection Type) 之 set(官方文档翻译及总结)
2015-07-15 14:41
573 查看
Swift语言提供经典的数组和字典两种集合类型来存储集合数据.数组和字典中存储的数据值类型必须明确.这意味着我们不能把不正确的数据类型插入其中.Swift对显式类型集合的使用确保了我们的代码对工作所需要的类型非常清楚.也让我们在开发中可以早早的找到任何的类型不匹配错误.如果你用变量(var)创建的集合,这些集合就是可变的(增删改).如果用常理创建的,这些集合是不能被操作的.
注意: 如果集合的元素是不变的,那就将集合声明为常量.这样Swift编译器能对你创建的集合做性能优化.
var someSet =Set<Character>()
或者如果上下文以及提供了类型信息,比如一个函数的参数或者一个已知类型的常量或变量.你可以创建用空的数组字面量创建一个空的set.
var someSet =Set<Character>()
// someSet现在包含一个Character的值
someSet.insert("a")
// someSet现在是一个空的set,但是它仍然是一个存储Character的set.
someSet = []
//可以直接使用数组字面量初始化一个set.
var
someSet:Set<String> = ["L","o","v","e"]
一个set不能单独的从数组字面量推断类型.所以set必须被明确的定义.然而根据swift的类型推断,当你用数组字面量初始化set的时候,如果包含的所以value是一种类型,你可以不写类型.
var
someSet:Set = ["L","o","v","e"]
//判断一个set是否包含一个值
var isContainAValue = someSet.contains("o")
println("\(isContainAValue)")
//遍历一个set
for itemin
someSet {
println("\(item)")
}
// 因为set类型没有顺序.所以要按照一个指定的顺序遍历set要使用全局sorted函数.
for iteminsorted(someSet)
{
println("\(item)")
}
![](http://img.blog.csdn.net/20150715155530669?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
// set的一些基本操作
let oddDigits:Set
= [1,3,5,7,9]
let evenDigits:Set = [0,2,4,6,8]
let sigleDigitPrimeNumber:Set = [2,3,5,7]
// 并集
let unionResult =sorted(oddDigits.union(evenDigits))
// println("\(unionResult)")
[0,1,2,3,4,5,6,7,8,9]
// 交集
let intersectResult =sorted(oddDigits.intersect(evenDigits))
println("\(intersectResult)")
// []
// 前一个包含,后一个不包含的元素
let subtractResult =sorted(oddDigits.subtract(sigleDigitPrimeNumber))
println("\(subtractResult)")
// [1, 9]
// 在前一个或者后一个set里面,但是去掉同时包含的元素
let exclusiveOrResult =sorted(oddDigits.exclusiveOr(sigleDigitPrimeNumber))
println("\(exclusiveOrResult)")
// [1, 2, 9]
![](http://img.blog.csdn.net/20150715155538386?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20150715160201747?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
注意: 如果集合的元素是不变的,那就将集合声明为常量.这样Swift编译器能对你创建的集合做性能优化.
1. 数组(array)
参考:
Swift 集合类型(Collection Type) 之 数组(array)
2. Set
一个set无序的存储相同类型的不同的值.当一个数组元素的顺序不重要或者你需要保证这些value只出现一次的时候使用set.2.1 语法
Set<SomeType>.和array不同的是,set没有缩写方式.var someSet =Set<Character>()
或者如果上下文以及提供了类型信息,比如一个函数的参数或者一个已知类型的常量或变量.你可以创建用空的数组字面量创建一个空的set.
var someSet =Set<Character>()
// someSet现在包含一个Character的值
someSet.insert("a")
// someSet现在是一个空的set,但是它仍然是一个存储Character的set.
someSet = []
//可以直接使用数组字面量初始化一个set.
var
someSet:Set<String> = ["L","o","v","e"]
一个set不能单独的从数组字面量推断类型.所以set必须被明确的定义.然而根据swift的类型推断,当你用数组字面量初始化set的时候,如果包含的所以value是一种类型,你可以不写类型.
var
someSet:Set = ["L","o","v","e"]
//判断一个set是否包含一个值
var isContainAValue = someSet.contains("o")
println("\(isContainAValue)")
//遍历一个set
for itemin
someSet {
println("\(item)")
}
// 因为set类型没有顺序.所以要按照一个指定的顺序遍历set要使用全局sorted函数.
for iteminsorted(someSet)
{
println("\(item)")
}
2.2 set关系
你可以效率很高的进行一下set操作.比如合并两个set.获取两个集合的相同部分.或者判断两个集合包含所以的,一些或者都不包含一些值.// set的一些基本操作
let oddDigits:Set
= [1,3,5,7,9]
let evenDigits:Set = [0,2,4,6,8]
let sigleDigitPrimeNumber:Set = [2,3,5,7]
// 并集
let unionResult =sorted(oddDigits.union(evenDigits))
// println("\(unionResult)")
[0,1,2,3,4,5,6,7,8,9]
// 交集
let intersectResult =sorted(oddDigits.intersect(evenDigits))
println("\(intersectResult)")
// []
// 前一个包含,后一个不包含的元素
let subtractResult =sorted(oddDigits.subtract(sigleDigitPrimeNumber))
println("\(subtractResult)")
// [1, 9]
// 在前一个或者后一个set里面,但是去掉同时包含的元素
let exclusiveOrResult =sorted(oddDigits.exclusiveOr(sigleDigitPrimeNumber))
println("\(exclusiveOrResult)")
// [1, 2, 9]
2.3 set比较
3.字典(dictionary)
参考:
Swift 集合类型(Collection Type) 之 字典(dictionary)(官方文档翻译及总结)
相关文章推荐
- Swift 字典Dictionary
- Swift 数组Array
- Swift 字符串String
- 欢迎使用CSDN-markdown编辑器
- Swift开发之 使用系统的TabbarController
- Swift学习之 泛型
- Swift学习之 访问控制
- Swift基本运算符
- Swift中的UIKit重力学
- Swift类型定义
- swift2 operators
- Swift 中的函数
- Swift 集合类型(Collection Type) 之 数组(array)(官方文档翻译及总结)
- Swift_UIButton_TextField实现及其协议
- Swift中的字典
- swift (三)
- swift (二)
- Swift现实
- swift (一)
- NSUserDefaults的使用(IOS - Swift)