每一門語言基本都會有這些數據結構,swift也不例外,而做爲一門現代的語言,swift提供了不少的現成的方法給咱們選擇。swift
// 三種聲明方式 var a = [1, 2, 3] // 類型推斷 var b:[String] = ["hello", "world"] var c:Array<Double> = [1.3, 2.2] // 結構體 var e = Array(repeating: -1, count: 3) // 經過初始化器生成一個初始值爲-1,長度爲3的數組 e = [-1, -1, -1] let f = [1, 2, 4] // 做爲一個常量,不可修改
當定義數組爲Any
類型時,可讓其中元素爲不一樣類型的變量。var a:[Any] = [1, 2, "SSR"]
windows
如何定義空數組?數組
var d = [Int]() // 經過初始化器,定義可變的空數組
數據結構
查看單個元素,swift數組和其餘語言同樣:app
print(a[2]) a[0] = 1
遍歷全部元素:code
var array = ["a", 2, "3"]
索引
直接遍歷:內存
for item in array { print(item) } "a" 2 "3"
根據索引進行遍歷:rem
for index in 0..<array.count { print(array[index]) } "a" 2 "3"
控制範圍進行遍歷:it
for item in array[1...2] { print(item) } 2 "3"
增:
array.append(1)
在末尾添加一個元素;array + ["hello", "world"]
直接利用加號;array.insert("aaa", at: 1)
在a[1]的位置插入"aaa"。刪:
array.remove(at: 0)
刪除索引0的位置改:
array.replaceSubrange((0...1), with: ["mac", "windows", "lalala"])
將數組a[0]到a[1]替換爲mac與windows和lalala。查:
array.contains("Hello")
array中有元素爲contains的值時,返回true;set集合是無序且不重複的數據集合。
var a:Set = [1, 2, 3] var b:Set<String> = ["hello", "world"] var c:Set<Int> = [1, 2, 3] var d:Set = ["A", 1] // 報錯
1. 不重複的集合
var a:Set = [1, 1] print(d) // [1],swift會自動把多的刪掉
2. 無序的集合
var a:Set = [1, 2, 3] print(a) // 每次輸出都不一樣 // [1, 2, 3] // [3 ,1 ,2]
var a:Set = [1, 2, 3] a.count // a的長度 a.insert(5) // 插入5(集合是無序的,因此不用說明位置) a.remove(1) // 刪除1 a.contains(2) // true
元組類型由 N個任意類型的數據組成(N >= 0),組成元組類型的數據能夠稱爲「元素」。
var a = (1, 1.5, "hello", true)
上面這種是利用了swift的數據類型推斷,若是想要更精確,咱們還能夠這麼操做:var a:(Int, String, Bool) = (1, "hello", false)
這兩種方式最爲常見。
還能夠用:
var a = (name1: "Xu", name2: "hangyu")
var a:(age:Int, name:String) = (20, "Xuhangyu") // 這樣定義元組必須規定數據類型
var (age, name) = (20, "Xuhangyu")
來定義元組。
元組能夠直接賦值:var b = a
,而且元組並非引用類型,a和b獨立擁有各自的內存,元組是值類型的數據,他的複製並非淺複製。
var a = (1, 1.5, "hello", true) print(a.0) // 1 print(a.3) // "hello"
若是在定義時定義了元素名,咱們就可使用:print(a.name1)
來訪問對應的數據。
若是使用了var (age, name) = (20, "Xuhangyu")
定義元組,能夠用print(age)
來訪問數據,但若是是普通的定義,必須使用print(a.name1)
。
var a = [1: "asdasd", 2: "123"] var b:Dictionary<String,String> = ["a":"123", "b":"lalal"] var c = [1: 1, 2: 2 ]
如何定義空字典?
var a = [Int:String]() // 和定義空數組方法相似
var a = ["a": "123", "b": "12333333"] print(a["a"]) // Optional("123") print(a["a"] ?? "undefined")
var a = ["a": "123", "b": "12333333"] a.updateValue("dilidili", forKey: "a") // 有該key時修改 a.updateValue("dilidili", forKey: "c") // 沒有該key時新增 a.removeValue(forKey: "a") // 刪除