Swift学习笔记 - 集合类型

2017-10-10  本文已影响0人  可怜兮兮的木头

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

一、数组Array

// 初始化器创建一个数组
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"]

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 (index, value) in someCharacters.enumerated() {
print("Item (index + 1): (value)")
}

二、集合Set

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

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

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]

三、字典Dictionary

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

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

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

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

上一篇 下一篇

猜你喜欢

热点阅读