技术杂货铺

持续进步就不吝啬分享

Swift学习笔记系列——(3)集合类型

Tags: Swift 学习笔记

发布时间:2015-07-06
修改时间:2015-07-06
作者:Erwin
博客地址:技术杂货铺
欢迎转载,转载请注明出处。

Swift学习笔记系列——(3)集合类型

三种集合类型

Array、Set和Dictionary

共同点

键(如果有的化)和值的类型是确定的
基于泛型

不同点

Array有序,Set无序,Dictionary无序
Array不排斥相同值,Set排斥相同值,Dictionary同一键的值唯一

Array

声明

正规写法:Array<类型>
简化写法:[类型]

创建空数组

[类型]()

用默认值创建数组

[类型](count:长度,repeatedValue:默认初始值)

用两个数组的内容创建新数组

使用“+”操作符

用数组字面值创建数组

[值1,值2……]

因为有类型推测,用字面值赋值的数组可以不声明类型

访问和修改数组

通过数组的方法、属性和下标

count属性

isEmpty属性

append(_:)方法

在数组末尾追加单个内容

+=

在数组末尾追加另外一个数组

索引

索引从0开始
用“数组名[索引]”访问和修改数组中的值
用“数组名[索引开始…索引结束]”访问和修改其中若干值

insert(_:atIndex)

在指定位置插入一个内容

removeAtIndex(_:)

在指定位置删除一个内容

removeLast()

删除最后一个内容
删除造成的空隙会被后面内容填充,数组无空位

遍历数组

for-in语句

for item in shoppingList {
// doSomething
}

enumerate()方法

enumerate()方法返回包含数组索引和对应内容的元组

for (index,value) in shoppingList.enumerate() {
   print("Item \(index+1):\(value)")
}

Set

无序存储同类型的不同内容

Set存储的类型的哈希值

Set中存储的值的类型需要遵循hashable协议,有哈希值
因为hashable协议继承了Equatable协议,所以还得实现==操作符
基本类型都有哈希值
没有联合值的枚举也有哈希值

Set声明语法

Set<T>

创建空Set

Set<T>()

用数组字面值初始化Set

单独一个字面值的情况不能省略类型声明
多个字面值而且是相同类型的情况可以省略类型声明

访问和修改Set

count属性

得到Set长度

isEmpty属性

得到Set是否为空

insert(_:)方法

插入一个内容

remove(_:)方法

移除一个内容

removeAll()方法

移除所有内容

contains(_:)方法

检查是否包含特定内容

遍历Set

for-in语句

sort()方法对Set进行排序

操作Set

intersect(_:)方法

取两个Set交集

exclusiveOr(_:)方法

取两个Set交集之外的合集

union(_:)方法

取两个Set合集

subtract(_:)方法

取Set A中不包括在Set B中的部分

Set的关系和相等

==

两个Set包含相同的东西

isSubsetOf(_:)方法

判断一个Set是不是完全被另一个Set包含

isSupersetOf(_:)方法

判断一个Set是不是完全包含另外一个Set

isStrictSubsetOf(_:)方法

判断一个Set是不是完全被另一个Set包含,相等除外

isStrictSupersetOf(_:)方法

判断一个Set是不是完全包含另外一个Set,相等除外

isDisjointWith(_:)方法

判断两个Set是否没有任何交集

Dictionary

无序
键的类型要一致
值的类型要一致
键值相互关联
键唯一
要求key遵循Hashable协议

声明

简短写法

[Key: Value]

全写

Dictionary<Key, Value>

创建空字典

var namesOfIntegers = [Int: String]()
// namesOfIntegers is an empty [Int: String] dictionary
namesOfIntegers =[:]

用字典字面值创建字典

[key 1: value 1, key 2: value 2, key 3: value 3]

访问和修改一个字典

count属性

isEmpty属性

下标修改和添加

dictornary[keyname]=value

用下标删除

dictornary[keyname]=nil

updateValue(_:forKey:)方法

等价于下标操作,返回一个可选值。

removeValueForKey(_:)方法

等价于下标赋值nil操作,返回一个可选值。

遍历字典

字典的每一项是一个元组

for (airportCode, airportName) in airports {
print("\(airportCode): \(airportName)")
}

利用keys和values属性

for airportCode in airports.keys {
print("Airport code: \(airportCode)")
}
// Airport code: YYZ
// Airport code: LHR
for airportName in airports.values {
print("Airport name: \(airportName)")
}
// Airport name: Toronto Pearson
// Airport name: London Heathrow

本章思维导图

这里写图片描述

阅读更多
版权声明:本文为博主原创文章,转载请注明来源。 https://blog.csdn.net/erwin2012/article/details/46776763
文章标签: swift
个人分类: Swift
上一篇Swift学习笔记系列目录
下一篇Swift学习笔记系列——(4)控制流
想对作者说点什么? 我来说一句

Python3基础学习笔记.pdf

2014年08月23日 1000KB 下载

灰狐驱动学习笔记系列

2010年09月11日 1.29MB 下载

Swift集合类型优化

2018年05月03日 18.96MB 下载

objc.io 集合类型优化swift

2018年05月16日 18.94MB 下载

Learning Swift 【2018 第3版】

2018年04月06日 13.58MB 下载

没有更多推荐了,返回首页

关闭
关闭