好丢人,最近写了一个摸不着东南西北的bug

说白了还是欠缺火候,下面总结一下Swift中的集合类。。。

空数组:

[类型]()

let array1 = [String]()

Array<类型>()

let array2 = Array<String>()

var array3 = Array<String>()

数组遍历:

for-in:

forEach:

同时得到索引和值enumerated()

使用Interator遍历数组

startIndex 返回第一个元素的位置,对于数组来说永远都是0

endIndex 返回最后一个元素索引+1的位置,对于数组来说等同于count

数组查找:

判断是否包含指定元素

let array1 = [Int](1...8)

let isExist = array1.contains(5)

print("1\(isExist)")

let exist2 = array1.contains { (e) -> Bool in

print("每个元素\(e)")

return e > 2

}

print("2\(exist2)")

let exist3 = array1.contains { (e) -> Bool in

e > 3

}

print("3\(exist3)")

let exist4 = array1.contains(where: {$0 > 4})

print("4\(exist4)")

判断所有元素符合某个条件

let array1 = [Int](1...8)

let isExist = array1.allSatisfy { (e) -> Bool in

return e > 0

}

print("是否都大于0:\(isExist)")

查找元素

let array1 = [Int](1...8)

let first = array1.first { (e) -> Bool in

print("第一个大于3的数\(e)")

return e > 3

}

let last = array1.last { (e) -> Bool in

print("最后一个大于3的数\(e)")

return e > 3

}

输出:

第一个大于3的数1

第一个大于3的数2

第一个大于3的数3

第一个大于3的数4

最后一个大于3的数8

查找索引:

firstIndex(of)返回指定元素在数组中出现的第一个位置

lastIndex(of: 5)返回指定元素在数组中出现的最后一个位置

let firstIndex = array1.firstIndex(of: 0)

print("0出现的第一个位置\(firstIndex)")

let lastIndex = array1.lastIndex(of: 5)

print("5出现的最后一个位置\(lastIndex ?? -1)")

输出:

0出现的第一个位置nil

5出现的最后一个位置4

let num3 = array1.firstIndex { (e) -> Bool in

e > 4

}

print("大于4的第一个数字位置\(num3 ?? -1)")

let num4 = array1.lastIndex { (e) -> Bool in

e > 4

}

print("大于4的最后一个数字位置\(String(describing: num4))")

输出:

大于4的第一个数字位置4

大于4的最后一个数字位置Optional(7)

数组添加和删除:

var numbers = [Int](arrayLiteral: 2,3,5,6,7)

在末尾添加一个元素

numbers.append(9)

在末尾添加多个元素

numbers.append(contentsOf: [4,6])

在指定位置插入一个元素

numbers.insert(1, at: 0)

在指定位置插入多个元素

numbers.insert(contentsOf: [4,6], at: 0)

移除并返回指定位置的一个元素

numbers.remove(at: 3)

移除并返回数组的第一个元素

let first =  numbers.removeFirst()

移除并返回数组的最后一个元素

let last = numbers.removeLast()

移除并返回数组的最后一个元素(Optional),如果数组为空返回nil

let last2 = numbers.popLast()

移除数组前面多个元素

numbers.removeFirst(3)

移除数组后面多个元素

numbers.removeLast(3)

移除数组中指定范围的元素

numbers.removeSubrange(2...5)

移除数组中的所有元素

numbers.removeAll() // 数组容量.capacity为0

移除数组中的所有元素并保持容量

numbers.removeAll(keepingCapacity: true)

数组片段ArraySlice

var numbers = [Int](arrayLiteral: 2,3,5,6,7,9,7,0)

numbers.sort()

let lastA = numbers.drop { (e) -> Bool in

print("\(e)")

if e < 5 {

return true

}else{

return false

}

}

print("numbers = \(numbers)")

print("lastA = \(lastA)")

输出结果:

0

2

3

5

numbers = [0, 2, 3, 5, 6, 7, 7, 9]

lastA = [5, 6, 7, 7, 9]

drop(:) 移除原数组符合指定条件的元素得到一个ArraySlice

细解:跳过一个元素之后,其余元素生成一个新序列,原序列不变。如果该元素应该被跳过,则闭包返回true,否则返回false。一旦返回false,它蒋不再被调用

除上面之外还有.prefix  .suffix  Range: numbers[2...4]

数组的分组

var numbers = [Int](arrayLiteral: 2,3,5,6,7,9,7,0)

let index = numbers.partition { (e) -> Bool in

return e > 3

}

let lastA = numbers[..<index]

let lastB = numbers[index...]

print("numbers = \(index) \(numbers)")

print("lastA = \(lastA)")

print("lastB = \(lastB)")

index是分组条件的开始位置,index前面的部分不满足条件,index后面的部分满足条件

数组的排序

numbers.sort()

numbers.sorted()

交换指定位置的两个元素 numbers.swapAt(2, 4)

Swift中的集合类之数组相关推荐

  1. 如何在Swift中串联或合并数组?

    本文翻译自:How do I concatenate or merge arrays in Swift? If there are two arrays created in swift like t ...

  2. swift java混合,如何在Swift中连接或合并数组?

    使用Swift 3,根据您的需求和品味,您可以选择其中一个 five following ways 来连接/合并两个数组 . 1.使用Swift标准库(: :)泛型运算符将两个数组合并为一个新数组 S ...

  3. swift语言 数组定义_如何在Swift中声明弱引用数组?

    I'd like to store an array of weak references in Swift. The array itself should not be a weak refere ...

  4. swft c 语言 数组,如何在swift中实现数组的深拷贝

    在Objective-C中如果想将一个数组赋值给另外一个数组,同时想让两个数组之间相互独立(即改变其中的一个数组,不影响另外的一个),有很多的办法,比如我们可以直接copy,用类方法创建新数组.这样得 ...

  5. 在Swift中向数组添加元素

    本文翻译自:Add an element to an array in Swift Suppose I have an array, for example: 假设我有一个数组,例如: var myA ...

  6. Swift Tips - 在 Swift 中自定义下标访问

    Untitled Document.md 在 Swift 中,我们可以使用下标轻松的访问数组中的元素.比如这样: var numbers:Array = [1,2,3,4,5] println(num ...

  7. 探索 Swift 中的 MVC-N 模式

    作者:Marcus Zarra(twitter:@mzarra) Marcus 将会为大家介绍一种设计模式,他曾经在那些需要从互联网进行大量频繁数据请求的 iOS 应用当中使用此设计模式.这个设计采用 ...

  8. swift设置启动图不现实_如何通过装饰房屋来开始在Swift中使用增强现实

    swift设置启动图不现实 by Ranadhir Dey 由Ranadhir Dey 如何通过装饰房屋来开始在Swift中使用增强现实 (How to get started with augmen ...

  9. 谈谈 Swift 中的 map 和 flatMap

    map 和 flatMap 是 Swift 中两个常用的函数,它们体现了 Swift 中很多的特性.对于简单的使用来说,它们的接口并不复杂,但它们内部的机制还是非常值得研究的,能够帮助我们够好的理解 ...

最新文章

  1. 3D Object Detection——BEV-based methods
  2. 移动端调取摄像头上面如何给出框_飞桨实战笔记:自编写模型如何在服务器和移动端部署...
  3. 我不知道风是在哪一个方向吹
  4. Oracle 11g安装步骤
  5. (一)docker run 命令参数
  6. C#代码总结02---使用泛型来获取Asp前台页面全部控件,并进行属性修改
  7. 都说dlib是人脸识别的神器,那到底能不能识破妖怪的伪装?
  8. Quick BI产品核心功能大图(五)移动端:让数据在更多业务场景中流通
  9. C# 根据年、月、周、星期获得日期等
  10. Spring内建可查找的依赖
  11. python requests下载图片_Python使用urllib库、requests库下载图片的方法比较
  12. 手把手教你在Windows环境下升级R
  13. 利用MindManager,制作简易的漏斗图
  14. SiTime硅晶振解决方案—汽车摄像头
  15. uva 11137 Ingenuous Cubrency
  16. 安卓开关Switch使用的小细节
  17. 建议平面设计爱好者要学的软件,和一些CDR常见问题
  18. 如何将PDF转换成Word文档?教你3种方法
  19. 性价比高的/便宜又好用的SSL证书品牌有哪些?
  20. 高级密码学复习1-HUST版

热门文章

  1. 数据挖掘导论读书笔记4--其他分类技术
  2. Java内存模型深度解析:final--转
  3. 【Python】Jupyter notebook
  4. 【Mongodb】MongoDB
  5. 小白看Word2Vec的正确打开姿势|全部理解和应用
  6. 当我们在聊 Serverless 时你应该知道这些
  7. 今日头条 CEO 张一鸣:面试了 2000 个年轻人
  8. Airbnb欺诈预测机器学习模型设计:准确率和召回率的故事 发表于2015-07-15 16:14| 3926次阅读| 来源AirBNB/Data| 1 条评论| 作者Ariana Radianto
  9. Ch2r_ood_understanding 本文档为论文限定领域口语对话系统中超出领域话语的对话行为识别的部分实验代码。代码基于Python,需要用到的外部库有: Keras(搭建神经网络) S
  10. 记一次mongoDB-@Document(collection = “XXX“)配置的探索