swift基礎-集合類型

一、數組

與oc相比,必須存放同一類型的數據
有順序

*寫法
Array<SomeType>
SomeType[]

 let array:Array<Int> = [1,2,3]
 var list:[String] = ["eggs","milk"]
 var list1=["eggs","milk"]

 //聲明空數組
 var emptyArray1:[Int] = []
 var emptyArray2:Array<Int> = []
 var emptyArray3 = [Int]()

*訪問和修改數組

list.count 
list.isEmpty//判斷是否為0,是為false,否為true
list[0]//通過索引來獲取數組元素
list.first
list.last
emptyArray1.first //返回nil
 *注意:既然能返回nil,說明通過這種方法返回的是個可選
  型,為此不能直接使用,必須要進行解包*
if let firstEmptyArray=list.first {
print(firstEmptyArray)
}
array1.min()
array1.max()

//通過一個范圍獲取數組的子數組
 array1[2..<4]
 array1[2..<array1.count]
list.contains("A") //判斷是否包含"A",返回true和false
//判斷數組是否包含某個元素,同時也知道元素所在索引
  位置,返回一個Int量,沒有的話返回nil
 list.index(of: "eggs")


//增
list.append("apple") //追加
list += ["water"]
list += ["Chocolate Spread", "Cheese", "Butter"]
list.insert("aaa", at: 2)
//刪
list.removeLast()//刪除最后一個元素
list.removeFirst()//刪除第一個元素
list.remove(at: 2)//刪除指定一個元素
list.removeSubrange(0..<2)//刪除一個范圍元素
list.removeAll()//刪除所有元素
//改
var arr = ["11" , "22" , "33"];
arr[0]="88"


//數組遍歷
for index in 0..<arr.count {
arr[index]
}
//不用索引
 for index in arr {
print(index)
}
//利用元組遍歷,得到元素和索引
for (index,aa) in arr.enumerated() {
print("\(index+1):\(aa)")
}

二、字典

存儲相同類型多重數據,每個key對應一個value
沒有順序,申明字典時,要把key和value的類型定義清楚

*寫法
Dictionary<KeyType,ValueType>
[key 1: value 1, key 2: value 2, key 3: value 3]

//顯式
 var dict:Dictionary<String,String> = ["01":"小明","02":"小
    紅","03":"小美"]
 var dict1:[String:String] = ["01":"swift","02":"java","03":"oc"]
//隱式
 var dict3 = ["01":"啊啊","02":"AA","03":"谷歌"]

//聲明空字典4種方式
 var emptyDict:[String:Int] = [:]
 var emptyDict1:Dictionary<Int,String> = [:]
 var emptyDict2 = [String:String]()
 var emptyDict4 = Dictionary<Int,Int>()

//通過key取出value
dict["swift"]  //取出來的是可選型,必須要進行解包
if let value = dict["swift"]{//解包
  print(value)
}

 //字典集合個數
  dict.count

 //判斷字典是否為空字典
 dict.isEmpty    //false
 emptyDict.isEmpty  //true

//取出字典所有的key和value
dict.keys
dict.values

//增
dict3["04"]="kk"
//改
dict3.updateValue("amjhn", forKey: "03")
dict3["04"]="ll"
//刪
dict3["04"]=nil
dict3.removeValue(forKey: "03")

三、set

值無序不重復,適合存儲具有唯一性的數據,如:身份證號

//定義:Set<元素類型>,無法使用類型推斷,但可省略類型
 llet cardno :Set=[1,2,3,1]  //結果也只有3,2,1
//用數組字面量創建集合
var citys:Set=["changsha","shanghai","wuhan","hef"]
citys.count
citys.isEmpty
//插入
citys.insert("guangzhou")
//移除
citys.remove("shanghai")
citys
//是否包含某元素
citys.contains("Beijing")
//轉換為數組
let cityArray=citys.sorted()

//集合的運算:交差并補

B0B608E2-5C8A-4D46-AF45-DF26C264AD69.png
//集合的運算:交差并補
var x:Set=[1,2,3,4]
let y:Set = [3,4,5,6]

//交集
x.intersection(y)
//差集
x.subtract(y)
//并集
x.union(y)
//補集
x.symmetricDifference(y)

//集合間關系:相等,包含
let h:Set=[1,2,3]
let i:Set = [3,2,1,4]
//可以相等
h.isSubset(of: i)
//嚴格子集
h.isStrictSubset(of: i)
//父集
i.isSuperset(of: h)
i.isStrictSuperset(of: h)
//無交集
let j:Set = [2,5,6]
let k:Set = [9,0,7]
j.isDisjoint(with: k)

四、集合的可變性

如果把數組和字典聲明成一個變量,它就是可變的。如果是聲明成常量,對于字典來說,不能替換任何key所對應的值,對于數組,大小不能改變,但可以更改現存索引所對應的值

附上demo
https://github.com/momosmile/swift_basic/tree/master/swift

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容