iOS开发Swift-集合类型

集合基本类型:数组 Array (有序), 集合 Set (无序不重复), 字典 Dictionary (无序键值对)

1.数组 Arrays

(1)数组的表示

复制代码
Array<Element>
[Element]

(2)创建空数组

复制代码
var someInts: [Int] = []
someInts.count    //数组长度

(3)带值数组

复制代码
var a = Array(repeating: 0.0, count:3)    //[0.0, 0.0, 0.0]
//repeating:初始值.count:长度

(4)两数组相加创建数组

复制代码
var a = Array(reapeating: 0.0, count = 3)
var b = Array(reapeating: 2.5, count = 3)
var c = a + b    //[0.0, 0.0, 0.0, 2.5, 2.5, 2.5]

(5)字面量创造数组

复制代码
var List: [String] = ["Eggs", "Milk"]   //或者
var List = ["Eggs", "Milk"]

(6)访问数组

复制代码
List.count    //长度(数据量)
List.isEmpty   //是否为空
List[0]    //Eggs
var egg = List[0]     //将第一个数组的值赋给egg

(7)添加

复制代码
List.append("Flour")   //append()方法添加
List += ["Powder"]    //直接添加一个数据
List += ["Spread", "Cheese", "Butter"]    //直接添加多个数据
List.insert("up", at: 0)    //在第一个数据前添加"up"

(8)修改

复制代码
List[0] = "Six Eggs"
List[4...6] = ["Banana", "Apple"]

(9)删除

复制代码
let a = List.remove(at: 0)  //索引值为0的项被移除。a被赋值被删除的那一项的值。后边的项自动往前补
let apple = List.removeLast()   //移除最后一项,a被赋值被删除的那一项的值

(10)遍历

复制代码
for item in List{  
    print(item)
}

同时需要索引和值时:

复制代码
for (index,value) in List.enumerated(){
    print( "Item \( String(index + 1) ): \(value)" )
}

2.集合 Sets

(1)集合的表示

复制代码
Set<Element>

(2)构造一个集合

复制代码
var letters = Set<Character>()      //或
letters.insert("a")
letters = []

(3)字面量创造集合

复制代码
var fav: Set<String> = ["Rock", "Class", "Hip"]    //或
var fav: Set = ["Rock", "Class", "Hip"]

(4)访问

复制代码
fav.count    //长度
fav.isEmpty    //是否为空
fav.contains("Funk")  //检查是否包含"Funk"值

(5)添加

复制代码
fav.insert("Jazz")

(6)删除

复制代码
fav.remove("Rock")   //如果有这个值则返回这个值,如果没有则返回nil
fav.removeAll()

(7)遍历

复制代码
for g in fav{
    print("\(g)")
}
//返回一个有序数组
for g in fav.sorted(){
    print("\(g)")
}

(8)集合操作

复制代码
let add: Set = [1, 3, 5, 7, 9]
let even: Set = [0, 2, 4, 6, 8]
let single: Set = [2, 3, 5, 7]
add.union(even).sorted()    //[]   交集
add.intersection(even).sorted()   //[1, 9]   add不在single中的值的集合
add.symmetricDifference(single).sorted()    //[1, 2, 9]   add和single不相交的值

(9)集合关系

复制代码
let h: Set = ["🐕", "🐱"]
let f: Set = ["🐕", "🐱", "🐥"]
let c: Set = ["🐦"]
//==: 全部相同
h.isSubset(of: f)  //true  h是否被f全包
f.isSuperset(of: h)   //true   f是否全包h
f.isDisjoint(with: c)  //true  f,c是否无交集
//isStrictSubset(of: ) / isStrictSuperSet(of: )    A是否是B的子集或父集且AB不相等

3.字典 Dictionary

(1)字典的表示

复制代码
Dictionary<Key, Value>  或者  [Key: Value]

(2)创建空字典

复制代码
var names: [Int: String] = [ : ]   //或者
names[16] = "sixteen"
names = [ : ]

(3)字典字面量创建字典

复制代码
var airports: [String: String] = ["a": "1", "b": "2"]   //或者
var airports = ["a": "1", "b": "2"]

(4)访问

复制代码
airports.count     //数量
airports,isEmpty    //是否为空

(5)新增

复制代码
airports["c"] = "3"

(6)修改

复制代码
airports["c"] = "4"

(7)更新

复制代码
airports.updateValue("6", forkey: "a")
//如果forkey存在值则修改,返回修改前的值。不存在则返回nil

(8)检索键对应的值。无值则返回nil

复制代码
airName = airports["a"]

(9)移除键值对

复制代码
airports["a"] = nil   //或者
airports.removeValue(forkey: "a")    //存在时返回被移除的值,不存在时返回nil

(10)遍历

复制代码
//1
for (airCode, airName) in airports{
    print("\(airCode) : \(airName)")
}
//2
for airCode in airports.keys{
    print("code: \(airCode)")
}
//3
let airCodes = [String](airports.keys)
let airNames = [String](airports.values)
相关推荐
Rinai_R8 分钟前
Go 的调度模型
开发语言·后端·golang
t1987512814 分钟前
计算力学中经典四阶常微分方程的MATLAB求解方法
开发语言·matlab
wjs202425 分钟前
MySQL 复制表
开发语言
专业开发者36 分钟前
调试 iOS 蓝牙应用的新方法
物联网·macos·ios·cocoa
laocooon52385788637 分钟前
相对名次算法的处理python
开发语言·python·算法
沐知全栈开发37 分钟前
CSS Overflow
开发语言
星火开发设计39 分钟前
Python冒泡排序详解:从原理到代码实现与优化
开发语言·笔记·python·开源·排序算法·课程设计
SHolmes18541 小时前
给定某日的上班时间段,计算当日的工作时间总时长(Python)
开发语言·前端·python
咖啡の猫1 小时前
Python字典元素的增、删、改操作
java·开发语言·python
Lucky小小吴1 小时前
JAVA漫谈反序列化篇——笔记
java·开发语言·笔记