Swift学习笔记 - 集合类型

Swift三种主要的集合类型:Array、Set、Dictionary

一、数组Array
  • 数组的类型写法: Array<String> (读作:存储字符串的数组) 或者简写为[String]

  • 初始化

// 初始化器创建一个数组
var someInts =[Int] ()
// 字面量创建一个数组
var someCharacters : Array<String> = ["a","b","c","d","e","f"]
// 等同于
var someCharacters : [String] = ["a","b","c","d","e","f"]
// swift同样可以类型判断,一下写法,系统默认是Array<String>类型
var someCharacters = ["a","b","c","d","e","f"]

  • 访问和修改数组:
    count属性检查数组中的元素数量

print( "The someCharacters contains ( someCharacters.count) items.")

isEmpty属性检查count属性是否为0

if someCharacters.isEmpty {
print("The someCharacters list is empty.")
} else {
print("The someCharacters list is not empty.")
}

append(_:)方法在数组末尾添加新元素

someCharacters.append("g")

加赋值运算符(+=)在数组末尾添加一个或者多个同类型元素

someCharacters += "h"

根据脚标替换元素

someCharacters[ 1...3] = ["z","s"]
// 现在someCharacters = ["a","z","s","e","f","g","h"]

  • 遍历数组
    for-in循环遍历数组 enumerated()方法来遍历数组 enumerated()方法返回数组中每一个元,包含这个元素的索引和值

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

二、集合Set

集合Set存储的值必须是可哈希的,所有 Swift 的基础类型(比如 String, Int, Double, 和 Bool)默认都是可哈希的。

  • Set类型写法:Set<String> (读作:存储字符串的集合)不同于数组、没有简写

  • 初始化

// 初始化器语法创建
var letters = Set<String>()
// 字面量创建集合
var favoriteGenres: Set<String> = ["Rock", "Classical", "Hip hop"]
// 等价于 (和Array不同,Set必须存在,以区分是数组还是集合)
var favoriteGenres: Set = ["Rock", "Classical", "Hip hop"]

  • 访问和修改:和Array同
  • 遍历集合
    Swift 的 Set类型是无序的。要以特定的顺序遍历合集的值,使用 sorted()方法,它把合集的元素作为使用 < 运算符排序了的数组返回。

for genre in favoriteGenres.sorted() {
print("(genre)")
}

  • 执行集合操作

let oddDigits: Set = [1, 3, 5, 7, 9]
let evenDigits: Set = [0, 2, 4, 6, 8]
let singleDigitPrimeNumbers: Set = [2, 3, 5, 7]

①使用 intersection(_:)方法来创建一个只包含两个合集共有值的新合集;

oddDigits.intersection(evenDigits).sorted()
// []

②使用 symmetricDifference(_:)方法来创建一个只包含两个合集各自有的非共有值的新合集;

oddDigits.symmetricDifference(singleDigitPrimeNumbers).sorted()
// [1, 2, 9]

③使用 union(_:)方法来创建一个包含两个合集所有值的新合集;

oddDigits.union(evenDigits).sorted()
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

④使用 subtracting(_:)方法来创建一个两个合集当中不包含某个合集值的新合集。

oddDigits.subtracting(singleDigitPrimeNumbers).sorted()
// [1, 9]

  • 集合比较
    ①使用“相等”运算符 ( == )来判断两个合集是否包含有相同的值;
    ②使用 isSubset(of:) 方法来确定一个合集的所有值是被某合集包含;
    ③使用 isSuperset(of:)方法来确定一个合集是否包含某个合集的所有值;
    ④使用 isStrictSubset(of:) 或者 isStrictSuperset(of:)方法来确定是个合集是否为某一个合集的子集或者超集,但并不相等;
    ⑤使用 isDisjoint(with:)方法来判断两个合集是否拥有完全不同的值。
三、字典Dictionary

字典储存无序的互相关联的同一类型的键和同一类型的值的集合。每一个值都与唯一的键相关联,它就好像这个值的身份标记一样,字典的 Key类型必须遵循 Hashable协议,就像集合的值类型。

  • 字典类型写法:Dictionary<Key, Value>,简写[Key: Value]
  • 初始化

// 初始化器创建
var namesOfIntegers = [Int : String] ()
// 字面量创建
var namesOfIntegers : Dictionary<Int : String> = [1 : "jimmy"]
// 等价于
var namesOfIntegers : [Int : String] = [1 : "jimmy"]
// 推断类型
var namesOfIntegers = [1 : "jimmy"]

  • 访问和修改字典
    字典的 updateValue(:forKey:)方法,会在键对应的值不存在时设置一个值,存在时更新它。updateValue(:forKey:)方法执行后,返回旧的值的可选类型。
  • 遍历字典
    for-in循环来遍历字典的键值对

for (code, name) in namesOfIntegers {
print("(code): (name)")
}

Swift 的 Dictionary类型是无序的。要以特定的顺序遍历字典的键或值,使用键或值的 sorted()方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 创建一个带有默认值的数组 Swift 中的Array类型还提供一个可以创建特定大小并且所有数据都被默认的构造方法。...
    雨影阅读 1,301评论 0 0
  • 本文章是本人学习 swift 时的笔记,略简单 一、数组(Arrays) 1、创建数组: 结果: 2、访问和修改数...
    走走婷婷1215阅读 1,540评论 0 0
  • 1 .数组 Arrays 数组使用有序列表存储同一类型的多个值。相同的值可以多次出现在一个数组的不同位置中。这和O...
    iceMaple阅读 3,355评论 0 1
  • 天空只有庭院那么大---- 香椿冒芽的时候 在红砖砌的影壁墙根 种下一排谷子 解冻开的泥土,我能嗅出海的味道 夏夜...
    763ae210e65d阅读 1,297评论 2 0
  • 在一场素描考试的监考中,我竟然发现了两个女孩的手是残疾的,一个女孩的左手萎缩,手掌很小,手指很细很短。另一...
    东山明月阅读 2,865评论 0 3

友情链接更多精彩内容