集合类型
- Swift中提供了3种基本集合类型
(Arrays,Sets,Dictionaries)
- 与OC一样,集合也分可变不可变,但是并不是用不同的类来初始化.在Swift中,如果将一个集合定义为常量
(let)
,则该集合是不可变集合,如果定义为变量(var)
,则该集合是可变集合. - Swift中的集合只能存储相同类型的数据.
- Swift中的集合支持泛型
数组(Arrays)
Swift中的Array
被桥接到NSArray
类上.
创建数组
创建一个空数组
var array = [Int]() //创建一个存储Int类型数据的数组
var array2 = Array<String>() //创建一个存储String类型的数组
创建带默认值的数组
var array = ["a","b","c"]
var array2 = [Int](count:9,repeatedValue:0); //创建长度为9并且以0填充所有值的数组
操作数组
通过 +
,+=
运算符连接两个数组
var array = [1,2,3]
var array2 = [4,5,6]
var newArray = array + array2 //结果 [1,2,3,4,5,6]
array += array2 // array 此时 = [1,2,3,4,5,6]
获得数组长度
var array = [1,2,3]
array.count //结果为3
插入元素与移除元素
var array = [1,2,3]
array.insert(0,atIndex:0) //此句后array = [0,1,2,3]
array.removeAtIndex(3) //此方法返回被移除的元素 此句后结果 [0,1,2]
array.removeLast() //移除最末尾的元素
array.removeFirst() //移除最开始的元素
迭代器遍历
var array = [1,2,3,4]
for (index,value) in array.enumerate()
{
print("\(index) , \(value)");
}
排序
var array = [1,2,12,55,25,12,3,4]
array.sort();
var array2 = ["g","天","a","abc"]
array2.sort();
集合(Sets)
Swift的Set
类型被桥接到NSSet
上
特性也是一样,无序,不可重复.跟java中的HashSet
一样,需要存入类型是可哈希的.Swift的所有基本数据类型都是可哈希的.
创建集合
var set = Set<Int>() //创建一个空Set
var set2:Set<Int> = [1,2,3] //创建带默认值的Set
var set3:Set = [1,2,3] //自动推断类型的Set
操作集合
var set = Set<Int>()
set.insert(1) //插入元素
set.insert(2)
set.contains(1) //是否包含元素
set.isEmpty //是否为空集合
set.remove(1) //删除指定元素 1
set.removeFirst() // 删除第一个元素
set.removeAll() //删除所有元素
合并,切割,去重
var set1:Set = [1,2,3,4]
var set2:Set = [4,5,6,7]
set1.intersect(set2) //交集 返回两个集合中都存在的元素集合 结果 [4]
set1.exclusiveOr(set2) //反交集? 返回在一个集合中存在,单在另一个集合中不存在的元素集合 结果[2,5,6,7,3,1]
set1.subtract(set2) // 返回在set1中有但是在set2中没有的元素集合,相当于用set2切掉了set1? 结果 [2,3,1]
set1.union(set2) //并集 合并并且会去重 结果:[2,4,5,6,7,3,1]
集合关系运算
用 ==
来判断两个Set是否包含相同的元素
var set1:Set<String> = ["a","c"]
var set2:Set<String> = ["c","a"]
set1 == set2 //结果为 true
使用isSupersetOf(_:)
来判断一个集合是否是另一个集合的子集.
var set1:Set<String> = ["a","c","d"]
var set2:Set<String> = ["c","a","b","d"]
set1.isSubsetOf(set2) //true
使用isDisjointWith(_:)
来判断两个集合是否没有交集(两者没有重复的元素)
字典(Dictionary)
Swift中的Dictionary
被桥接到NSDictionary
类上.
创建字典
var dict:Dictionary<String,Int> = Dictionary<String,Int>()
var dict2 = [String:Int]()
var dict3 = ["key1":"value1" , "key2" : "value2"]
操作字典
var dict = ["key1":"value1" , "key2" : "value2"]
dict.count //获取字典大小
dict.isEmpty //字典是否为空
dict["key3"] = "value3" //设置 key3 的值 为value3
dict.updateValue("value4", forKey: "key4") //设置key4的值为value4 并且返回更新之前的值,如果要更新的key之前不存在,则返回nil并且插入新的键值对
dict.removeValueForKey("key4") // 按key删除元素,返回删除元素的value
dict["key3"] = nil // 相当于删除了key = key3的元素
遍历
for (key,value) in dict //元组遍历
{
print("\(key) : \(value)")
}
for key in dict.keys //遍历所有的key
{
print("\(key) : \(dict[key])")
}
for value in dict.values //遍历所有的value
{
print("value : \(value)")
}