- 數(shù)組:
Array - 空數(shù)組(實(shí)例化)
var intsArray = [Int]()
- 創(chuàng)建任意長(zhǎng)度默認(rèn)值數(shù)組
- 合并數(shù)組(注意,合并數(shù)組時(shí),數(shù)組內(nèi)部的數(shù)據(jù)類(lèi)型必須相同)
var str1:[Character] = Array(repeating: "h", count: 1)
var str2:[Character] = Array(repeating: "e", count: 1)
var str3:[Character] = Array(repeating: "l", count: 2)
var str4:[Character] = Array(repeating: "o", count: 1)
var newArray = str1 + str2 + str3 + str4
var string = String()
string.insert(contentsOf: newArray, at: string.startIndex)
- 已知數(shù)值快速實(shí)例化數(shù)組
var strArray:[String] = ["str1","str2","str3"]
- 不定義數(shù)組類(lèi)型,Swift會(huì)根據(jù)數(shù)組中數(shù)據(jù)類(lèi)型自行定義數(shù)組類(lèi)型
var str = ["str1","str2"]
- 判斷數(shù)組是否為空
var str:[String] = []
var isEmpty = str.isEmpty
- 添加數(shù)組元素
//添加最后一位元素
var str:[String] = []
str += ["str1"]
str += ["str2","str3"]
str.append("str6")
//在指定位置添加元素(需要注意數(shù)組越界問(wèn)題)
str.insert("str0", at: 0)
str.insert(contentsOf: ["str4","str5"], at: 4)
- 移除數(shù)組元素(需要注意數(shù)組越界問(wèn)題)
var str = ["str6","str1","str","str2","str4"]
str.removeFirst()
str.remove(at: 1)
str.removeLast()
- 取值(需要注意數(shù)組越界問(wèn)題)
var str = ["str1","str2"]
var string = str[0]
- 改變對(duì)應(yīng)位置,對(duì)應(yīng)區(qū)間值(區(qū)間長(zhǎng)度跟替換值長(zhǎng)度不一致時(shí),也可以替換,相應(yīng)的會(huì)使數(shù)組長(zhǎng)度發(fā)生改變)
var str = ["str1","str2","str3","str4","str5"]
str[0] = "str0"
str[1...str.count-1] = ["str1","str2","str3","str4"]
str[str.count-2...str.count - 1] = ["str3","str4","str5"]
- 遍歷數(shù)組
var str = ["str1","str2","str3","str4"]
//只取值
for item in str {
print(item)
}
//取值以及值對(duì)應(yīng)的索引
for (index,item) in str.enumerated() {
print("index is \(index) value is \"\(item)\"")
}
- 集合:
Set(集合內(nèi)的所有元素?zé)o序排列,且相同元素只存在一個(gè)) - 空集合(實(shí)例化)
var set = Set<String>()
- 利用數(shù)組實(shí)例化集合(此處我們發(fā)現(xiàn)只會(huì)有一個(gè)str1,這是因?yàn)榧系奈ㄒ恍?注意,如果使用數(shù)組定義集合,則集合變量或常量名后,必須跟上集合類(lèi)型,否則Swift會(huì)自動(dòng)推斷為數(shù)組類(lèi)型,集合內(nèi)數(shù)據(jù)類(lèi)型可不寫(xiě))
//例子1,指定strSet為集合類(lèi)型,集合內(nèi)值類(lèi)型為String類(lèi)型
var strSet:Set<String> = ["str0","str1","str1","str2"]
//例子2,指定strSet1為集合類(lèi)型,集合內(nèi)值類(lèi)型不寫(xiě)明,根據(jù)其后數(shù)組內(nèi)數(shù)據(jù)類(lèi)型自行填充
var strSet1:Set = ["str0","str1","str1","str2"]
//例子3,不制定strSet2類(lèi)型,strSet2在Swift中自動(dòng)被判斷為數(shù)組類(lèi)型
var strSet2 = ["str0","str1","str1","str2"]
- 增刪改查
var set:Set = [1,2,3,4,5]
//集合長(zhǎng)度
set.count
//集合是否為空
set.isEmpty
//插入數(shù)值
set.insert(6)
//移除某個(gè)值,方法返回的是這個(gè)對(duì)應(yīng)的值,若返回nil,則說(shuō)明集合中不存在改數(shù)值
let removeValue = set.remove(2)
//判斷集合中是否存在對(duì)應(yīng)值
var isContainSix = set.contains(6)
//清空集合
set.removeAll()
- 遍歷集合
var set:Set = [1,2,3,4,5]
//無(wú)序遍歷
for numbers in set {
print(numbers)
}
//有序遍歷
for numbers in set.sorted() {
print(numbers)
}
- 集合操作
var set1:Set = [1,2,3,4,5]
var set2:Set = [4,5,6,7,8]
//union(合并)
set1.union(set2)
//symmetricDifference(去除相同元素,并合并兩個(gè)集合中剩下的不同元素)
set1.symmetricDifference(set2)
//intersection(留下相同元素)
set1.intersection(set2)
//subtracting(去除相同元素,只保留調(diào)起方法集合中剩下的元素)
set1.subtracting(set2)
-集合間關(guān)系
var numberLessThanTen:Set = [1,2,3,4,5,6,7,8,9]
var oddNumber:Set = [1,3,5,7,9]
var oddNumber1:Set = [1,3,5,7,9]
var numberGreaterThanTen:Set = [10,11,12,13]
//超集(集合中包含所有對(duì)比集合的數(shù))
numberLessThanTen.isSuperset(of: oddNumber)
//子集(集合中的數(shù),對(duì)比集合中全部都有)
oddNumber.isSubset(of: numberLessThanTen)
//相等(兩個(gè)相等的集合,互為超集和子集)
oddNumber == oddNumber1
//互斥(沒(méi)有共同元素)
numberLessThanTen.isDisjoint(with: numberGreaterThanTen)
- 字典(
Dictionary,無(wú)序,鍵值對(duì)存在,一個(gè)鍵對(duì)應(yīng)一個(gè)值,相同鍵只存在一個(gè)) - 空字典(實(shí)例化)
var timeDict = [String:Int]()
- 已知對(duì)應(yīng)鍵值實(shí)例化
var timeDict:[String:Int] = ["hour":10,"min":40,"sec":01]
var timeDict1 = ["hour":10,"min":40,"sec":01]
- 字典操作(可以用已知鍵來(lái)取值,注意下面例子我輸出時(shí)用了!強(qiáng)制解析,因?yàn)樽值渲?用[key]取值,取到的是可選類(lèi)型的值)
var timeDict = ["hour":10,"min":40,"sec":01]
//updataValue(方法返回一個(gè)optional的對(duì)象,若返回nil,則代表沒(méi)有對(duì)應(yīng)的鍵值對(duì),如果鍵值存在,則更新鍵對(duì)應(yīng)的值,若不存在,在字典中新增一個(gè)鍵值對(duì))
timeDict.updateValue(55, forKey: "min")
timeDict.updateValue(21, forKey: "day")
//取值
timeDict["hour"]
print("time is \(timeDict["hour"]!):\(timeDict["min"]!):\(timeDict["sec"]!)")
//便捷的改變鍵值,與update方法相同,若不存在該鍵,在字典中新增一個(gè)鍵值對(duì)
timeDict["hour"] = 11
timeDict["month"] = 2
print("today is \(timeDict["month"]!)-\(timeDict["day"]!) time is \(timeDict["hour"]!):\(timeDict["min"]!):\(timeDict["sec"]!)")
//刪除值(返回一個(gè)可選類(lèi)型的值,若存在,則字典中含有該鍵值對(duì),并刪除,若返回nil,則表示不存在該鍵值對(duì))
var month = timeDict.removeValue(forKey: "month")
var year = timeDict.removeValue(forKey: "year")
- 遍歷
var timeDict = ["hour":10,"min":40,"sec":01]
//遍歷鍵值對(duì),以元組形式返回
for (key,value) in timeDict {
print("key is \(key) value is \(value)")
}
//遍歷所有的鍵
for value in timeDict.values {
print ("value is \(value)")
}
//遍歷所有的值
for key in timeDict.keys {
print ("value is \(key)")
}