1. 程式人生 > >Swfit:陣列、字典、集合

Swfit:陣列、字典、集合

1. 陣列

import UIKit

var arr = [Int]()
for i in 0 ..< 10 {
    arr.append(i)
}
arr[2 ... 5]
arr.contains(11) // 返回一個布林值
arr.index(of: 1) // 返回1對應的下標

for (index, value) in arr.enumerated() {
    print("\(index + 1): \(value)")
}

let arr2 = arr
arr == arr2 // 內容是一樣的,返回true

arr += [10, 11] // 新增新元素
arr.insert(12, at: 12)
arr.remove(at: 0)
arr.removeSubrange(2 ... 4) // 去除第3,4,5項
arr[0 ... 1] = [100, 100, 100] // 將前兩個數換成三個100
arr

var board = [[1, 2, 3], [4, 5, 6]]
board += [[0]] // 二維陣列用 += 新增元素要括兩層陣列
print(board)

// NSArray 可以承載不同的資料型別,是一個類
// Swift中的陣列不能承載不同的資料型別,是一個結構體

var  arr3: NSArray = [1, "sss"] // 可以有不同的型別

2. 字典

import Foundation

var dic = [String: Int]() //申明空字典

dic["a"] = 1
dic["b"] = 2
dic.count
dic.isEmpty
Array(dic.keys) // 所有鍵組成一個數組
Array(dic.values) // 所有值組成一個數組

for key in dic.keys {
    print(key)
}

for (key, value) in dic {
    print("\(key): \(value)")
}

let dic2 = dic
dic == dic2 // 字典是結構體型別,只用於判斷內容是否相等,沒有引用的概念

// 修改值
dic["a"] = 10 // 方法一
dic.updateValue(4, forKey: "a") // 方法二,並返回舊的值
dic

// 新增
dic["c"] = 3
dic.updateValue(2, forKey: "d")

//刪除
dic["c"] = nil
dic.removeValue(forKey: "a")
dic

3. 集合

import Foundation
import UIKit

var num = Set<Int>()

var num2 = Set([1, 3, 3]) // 去重

num2.count
num2.isEmpty
num2.first // 隨機的取出一個元素

for i in num2 {
    print(i)
}

let num3 = num2
num2 == num3

// 增
num2.insert(4)
num2

// 刪
num2.remove(4)
num2

// 沒有改

// 並
var set1 = Set([1, 2, 3, 4])
var set2 = Set([2, 3, 4, 5])
set1.union(set2) // 並不改變set1
set1
set1.formUnion(set2) // 改變set1
set1

// 交
set1.intersection(set2)
set1
set1.formIntersection(set2)
set2

// 差
var set3 = Set([1, 2, 3, 4])
var set4 = Set([2,3,5])
set3.subtracting(set4) // set3獨有而set4沒有,不改變set3
set3
set3.subtract(set4) //改變set3
set3

 註釋:

一、元組和集合不要弄混。

元組類似於結構體,他有如下特點:

1 可以有任意多個值

2 不同的值可以有不同的型別

3 用小括號括起來

4. 元組也有型別,比如(Int, Int)

 

二、陣列、字典和集合都用中括號

只不過

陣列:不用顯示註明,預設陣列型別

字典:用冒號來宣告

集合:需要用Set強制型別轉換或者顯示宣告