Swift集合

Posted fgyong的开发日记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift集合相关的知识,希望对你有一定的参考价值。

集合

Swift中有三种集合形式,分别是数组、集合、字典,数组是有序集合,集合是无序,字典是键值对的。

数组

数组中指定类型只能容纳该类型数据,想要容纳多种数据可以使用Any关键字,或协议

let arInt = [0]
let arStr = ["0"]
let arAny : [Any] = [0,"1",[2],Set<Int>.init(arrayLiteral: 3)]
for i in arAny{
    print(i)
}


//访问

array[0]
arrayStr[1]
a2[3]

集合

var set = Set<Int>.init(arrayLiteral: 1,2,3)
for i in set{
    print(i)
}
set.insert(4)
set.removeAll() //删除
set = [] //set的类型依旧是 Set<Int>
print(type(of: set))
let del = set.remove(1//删除单个元素

//检查是否包含某个元素
if set.contains(1){
    print("包含元素1")
}
// 遍历集合
for i in set{

}

集合是无序的,但是标准库提供了排序函数返回有序数组。

set.sorted() // [Int]

集合的并集、交集、等操作

let news = s1.intersection(s2)//s1 和s2 交集
let news2  = s1.symmetricDifference(s2) // news的 取反,就是s1 + s2 - (s1 & s2)
let news3 = s1.union(s2) // s1 || s2
let news4 = s1.subtracting(s2)// s1 + s2 - (s2)

字典

//初始化
var dic = Dictionary<Int,Int>()
var dic2 = [Int:Int]()
// 赋值
dic[1] = 1
dic2[2] = 2
// 更新值
dic.updateValue(10, forKey: 1)
dic2.updateValue(20, forKey: 2)
print(dic,dic2)
// 
dic[3] = 3
dic[4] = 4
dic[5] = 5
// 字典是否包含某个 kye  或者value,使用闭包来生成条件
if dic.contains(where: { (key,value) -> Bool in
    print(key,value)
    return key == 1
}){
//    print(dic)
}

不确定是否包含该key可以这样

if let v = dic[1]{
    print(v)
}else{
    print("no 1")
}

也可以这样

guard let let v = dic[1] else{
    return
}

当需要keyvalue同时需要读取的话

for i in dic{
    print(i.key,i.value)
}
// OR
for (k,v) in dic{
    print(k,v)
}



推荐阅读

 
 
  
 


以上是关于Swift集合的主要内容,如果未能解决你的问题,请参考以下文章

swift 代码片段

如何将这个 Objective-C 代码片段写入 Swift?

如何使用 Swift 使用此代码片段为 iOS 应用程序初始化 SDK?

Swift新async/await并发中利用Task防止指定代码片段执行的数据竞争(Data Race)问题

Swift新async/await并发中利用Task防止指定代码片段执行的数据竞争(Data Race)问题

swift 为什么我们有一个片段。我认为这有助于我们在另一个页面中有一个代码。