swift基礎(chǔ)-集合類型

一、數(shù)組

與oc相比,必須存放同一類型的數(shù)據(jù)
有順序

*寫法
Array<SomeType>
SomeType[]

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

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

*訪問和修改數(shù)組

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

//通過一個范圍獲取數(shù)組的子數(shù)組
 array1[2..<4]
 array1[2..<array1.count]
list.contains("A") //判斷是否包含"A",返回true和false
//判斷數(shù)組是否包含某個元素,同時(shí)也知道元素所在索引
  位置,返回一個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"


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

二、字典

存儲相同類型多重?cái)?shù)據(jù),每個key對應(yīng)一個value
沒有順序,申明字典時(shí),要把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"]  //取出來的是可選型,必須要進(jìn)行解包
if let value = dict["swift"]{//解包
  print(value)
}

 //字典集合個數(shù)
  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

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

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

//集合的運(yùn)算:交差并補(bǔ)

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

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

//集合間關(guān)系:相等,包含
let h:Set=[1,2,3]
let i:Set = [3,2,1,4]
//可以相等
h.isSubset(of: i)
//嚴(yán)格子集
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)

四、集合的可變性

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

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

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

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

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