Swift---4.集合類型

  • 數組:Array
  • 空數組(實例化)
var intsArray = [Int]()
  • 創建任意長度默認值數組
  • 合并數組(注意,合并數組時,數組內部的數據類型必須相同)
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)
  • 已知數值快速實例化數組
var strArray:[String] = ["str1","str2","str3"]
  • 不定義數組類型,Swift會根據數組中數據類型自行定義數組類型
var str = ["str1","str2"]
  • 判斷數組是否為空
var str:[String] = []
var isEmpty = str.isEmpty
  • 添加數組元素
//添加最后一位元素
var str:[String] = []
str += ["str1"]
str += ["str2","str3"]
str.append("str6")
//在指定位置添加元素(需要注意數組越界問題)
str.insert("str0", at: 0)
str.insert(contentsOf: ["str4","str5"], at: 4)
  • 移除數組元素(需要注意數組越界問題)
var str = ["str6","str1","str","str2","str4"]
str.removeFirst()
str.remove(at: 1)
str.removeLast()
  • 取值(需要注意數組越界問題)
var str = ["str1","str2"]
var string = str[0]
  • 改變對應位置,對應區間值(區間長度跟替換值長度不一致時,也可以替換,相應的會使數組長度發生改變)
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"]
  • 遍歷數組
var str = ["str1","str2","str3","str4"]
//只取值
for item in str {
     print(item)
}
//取值以及值對應的索引
for (index,item) in str.enumerated() {
     print("index is \(index) value is \"\(item)\"")
}
  • 集合:Set(集合內的所有元素無序排列,且相同元素只存在一個)
  • 空集合(實例化)
var set = Set<String>()
  • 利用數組實例化集合(此處我們發現只會有一個str1,這是因為集合的唯一性.注意,如果使用數組定義集合,則集合變量或常量名后,必須跟上集合類型,否則Swift會自動推斷為數組類型,集合內數據類型可不寫)
//例子1,指定strSet為集合類型,集合內值類型為String類型
var strSet:Set<String> = ["str0","str1","str1","str2"]
//例子2,指定strSet1為集合類型,集合內值類型不寫明,根據其后數組內數據類型自行填充
var strSet1:Set = ["str0","str1","str1","str2"]
//例子3,不制定strSet2類型,strSet2在Swift中自動被判斷為數組類型
var strSet2 = ["str0","str1","str1","str2"]
  • 增刪改查
var set:Set = [1,2,3,4,5]
//集合長度
set.count
//集合是否為空
set.isEmpty
//插入數值
set.insert(6)
//移除某個值,方法返回的是這個對應的值,若返回nil,則說明集合中不存在改數值
let removeValue = set.remove(2)
//判斷集合中是否存在對應值
var isContainSix = set.contains(6)
//清空集合
set.removeAll()
  • 遍歷集合
var set:Set = [1,2,3,4,5]
//無序遍歷
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(去除相同元素,并合并兩個集合中剩下的不同元素)
set1.symmetricDifference(set2)
//intersection(留下相同元素)
set1.intersection(set2)
//subtracting(去除相同元素,只保留調起方法集合中剩下的元素)
set1.subtracting(set2)

-集合間關系

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]
//超集(集合中包含所有對比集合的數)
numberLessThanTen.isSuperset(of: oddNumber)
//子集(集合中的數,對比集合中全部都有)
oddNumber.isSubset(of: numberLessThanTen)
//相等(兩個相等的集合,互為超集和子集)
oddNumber == oddNumber1
//互斥(沒有共同元素)
numberLessThanTen.isDisjoint(with: numberGreaterThanTen)
  • 字典(Dictionary,無序,鍵值對存在,一個鍵對應一個值,相同鍵只存在一個)
  • 空字典(實例化)
var timeDict = [String:Int]()
  • 已知對應鍵值實例化
var timeDict:[String:Int] = ["hour":10,"min":40,"sec":01]
var timeDict1 = ["hour":10,"min":40,"sec":01]
  • 字典操作(可以用已知鍵來取值,注意下面例子我輸出時用了!強制解析,因為字典中,用[key]取值,取到的是可選類型的值)
var timeDict = ["hour":10,"min":40,"sec":01]
//updataValue(方法返回一個optional的對象,若返回nil,則代表沒有對應的鍵值對,如果鍵值存在,則更新鍵對應的值,若不存在,在字典中新增一個鍵值對)
timeDict.updateValue(55, forKey: "min")
timeDict.updateValue(21, forKey: "day")
//取值
timeDict["hour"]
print("time is \(timeDict["hour"]!):\(timeDict["min"]!):\(timeDict["sec"]!)")
//便捷的改變鍵值,與update方法相同,若不存在該鍵,在字典中新增一個鍵值對
timeDict["hour"] = 11
timeDict["month"] = 2
print("today is \(timeDict["month"]!)-\(timeDict["day"]!) time is \(timeDict["hour"]!):\(timeDict["min"]!):\(timeDict["sec"]!)")
//刪除值(返回一個可選類型的值,若存在,則字典中含有該鍵值對,并刪除,若返回nil,則表示不存在該鍵值對)
var month = timeDict.removeValue(forKey: "month")
var year = timeDict.removeValue(forKey: "year")
  • 遍歷
var timeDict = ["hour":10,"min":40,"sec":01]
//遍歷鍵值對,以元組形式返回
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)")
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容