Swift---4.集合類(lèi)型

  • 數(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)")
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容