微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

swift集合类型——数组和字典

Swift 语言提供了数组和字典两种集合类型来存储集合数据。数组用来按顺序存储相同类型的数据。字典则是以无序的方式来存储键值对(key,value)。数组和字典都是强类型的,也就意味着,数组和字典在声明时必须指明类型。

本篇博客我们来分别讨论swift中的数组和字典

数组

数组就是以一个从头到尾的顺序存储相同类型值的容器。相同的值可以在一个数组中出现多次。下面来创建并初始化两个数组:

创建数组

var intArray : [Int] = [1,2,3]
var strArray : [String] = ["hello","world"]

注意:我现在编写的swift代码的版本是swift2.1,数组的类型是[Type],而不是Type[]
由于swift可以进行类型推测,所以我在创建这两个数组时可以不标注类型,如下

var intArray = [1,3]
var strArray= ["hello","world"]

可以这样来创建一个空数组

var emptyArray = [Int]()

访问和修改数组

我们可以通过访问数组下标来获取数组中某个元素的值,也可以通过数组的其它属性方法修改数组。

//获取数组中的元素个数
var itemCount = intArray.count
//判断数组是否为空
var isEmpty = intArray.isEmpty
//通过下标来访问数组的某个元素
var item = intArray[0]
//向数组的最后面加入元素
intArray.append(4)
//改变某个位置上元素的值
intArray[0] = 0
//移除某个位置的元素
var removedItem = intArray.removeAtIndex(1)
//判断数组是否包含某个值
intArray.contains(2)
//向数组的某个位置插入一个
intArray.insert(2,atIndex: 1)
//再次判断
intArray.contains(2)

如果你认为swift关于数组的操作就这么多,那你就错了,下面来两个更强大的功能:数组的拼接和区域内赋值

var anotherIntArray = [4,5,6]
intArray += anotherIntArray

strArray += ["hello","swift"]

数组的拼接是把第二个数组全部接到第一个数组的最后面

intArray[2...4] = [1,2]
intArray[2...4] = []

这个区域内赋值(这个名字是我瞎编的,哈哈),就是把数组的下标在2到4之间的元素替换为等号后面给定的数组,任意长度哦,(可以为空数组哦,瞬间变成批量移除哦)

数组的遍历

我们可以使用传统的for循环语法来遍历数组,也可以使用for-in的语法来遍历数组

for var i = 0 ;i < intArray.count ; i++ { print(intArray[i]) }

for item in intArray{ print(item) }

常量数组

如果把一个数组声明为常量,则:

  1. 列表的长度不可被修改,append()等方法不能使用,否则编译器报错
  2. 列表内任意元素的值不可被修改,否则编译器报错
//声明一个常量数组
let intArray = [1,3]
intArray.append(4)  //报错,数组长度不可被修改
intArray[0] = 0     //报错,数组内的任意元素不可被修改

字典

字典是一组特定类型的键值对。下面来创建一个字典

var dic = [1:"one",2:"two",3:"three"]
if let value = dic[2]{
    print(value)
}
dic[4]="foure"
print(dic[4])

输出结果为

two
Optional("foure")

我通过字面值来创建了一个Dictionary

字典的遍历

用for…in的方式来遍历字典

for (number,str) in dic{
    print(number)
    print(str)
}

字典中的每个项都通过元组的形式返回。
也可以单独遍历所有的key或所有的value

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

for v in dic.values{
    print(v)
}

遍历字典时,所有的值都是非可选的。

常量字典

与常量的数组不同,常量的字典中的键的值是不可修改的,当然,字典的长度也是不能修改的。

原文地址:https://www.jb51.cc/swift/324555.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐