Swift初探02 數組、集合、元組、字典

數組、集合、元組、字典

每一門語言基本都會有這些數據結構,swift也不例外,而做爲一門現代的語言,swift提供了不少的現成的方法給咱們選擇。swift

1、數組

01 數組的定義

// 三種聲明方式
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]() // 經過初始化器,定義可變的空數組數據結構

02 數組的遍歷

查看單個元素,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"

03 數組的增刪改查

增:

  1. array.append(1)在末尾添加一個元素;
  2. array + ["hello", "world"]直接利用加號;
  3. array.insert("aaa", at: 1)在a[1]的位置插入"aaa"。

刪:

  1. array.remove(at: 0)刪除索引0的位置

改:

  1. array.replaceSubrange((0...1), with: ["mac", "windows", "lalala"])將數組a[0]到a[1]替換爲mac與windows和lalala。

查:

  1. array.contains("Hello")array中有元素爲contains的值時,返回true;

2、集合

01 集合的定義

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]

02 集合的增刪改查

var a:Set = [1, 2, 3]
a.count // a的長度
a.insert(5) // 插入5(集合是無序的,因此不用說明位置)
a.remove(1) // 刪除1
a.contains(2) // true

3、元組

01 元組的定義

元組類型由 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獨立擁有各自的內存,元組是值類型的數據,他的複製並非淺複製

02 元素的訪問

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)

4、字典

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]() // 和定義空數組方法相似

01 字典的取值

var a = ["a": "123", "b": "12333333"]
print(a["a"]) // Optional("123")
print(a["a"] ?? "undefined")

02 字典的修改與添加與刪除

var a = ["a": "123", "b": "12333333"]
a.updateValue("dilidili", forKey: "a") // 有該key時修改
a.updateValue("dilidili", forKey: "c") // 沒有該key時新增
a.removeValue(forKey: "a") // 刪除
相關文章
相關標籤/搜索