每一门语言基本都会有这些数据结构,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") // 删除