Swift学习笔记(三)

集合类型

  • 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)")
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值