swift3.0集合类型(Array,Set,Dictionary)

集合类型

Swift提供了三种主集合类型,称为数组,集合和字典,用于存储值的集合。 数组是值的有序集合。集合是唯一值的无序集合。 字典是键-值关联的无序集合。

 

一、数组

数组(Array)在有序列表中存储相同类型的值。相同的值可以在不同位置多次出现在数组中。

1>.创建数组

//创建空数组

var someInts= [Int]()//使用初始化语法创建特定类型的空数组

someInts.append(3)

print(someInts)//[3]

someInts = []//赋值空数组

print(someInts)//[] 一个空数组,但仍然是类型[Int]

 

//使用默认值创建数组

var threeDoubles =Array(repeating:0.0, count:3)

print(threeDoubles)//[0.0, 0.0, 0.0]

 

//通过一起相加(+)两个数组来创建数组

var twoDoubles =Array(repeating:0.12, count:2)

var fourDoubles =Array(repeating:1.5, count:4)

print(twoDoubles +fourDoubles)//[0.12, 0.12, 1.5,1.5, 1.5, 1.5]

 

//使用值列表创建数组  [1,值2,值3] 值用逗号分隔,并用一对方括号括起来

var shoppingList: [String] =["Eggs","Milk"]

 

2>.访问和修改数组

var modifyArray = ["Eggs","Milk"]

//count:数组的元素个数

print("modifyArrayhas\(modifyArray.count) items")//modifyArray has 2items

 

//isEmpty:判断数组的count属性是否等于0

print(modifyArray.isEmpty)//false

 

//append_ :)将新元素添加到数组的末尾:

modifyArray.append("Apple")

print(modifyArray)//["Eggs","Milk", "Apple"]

 

//使用加法赋值运算符(+=)附加一个或多个兼容项目的数组

modifyArray += ["peach"]

print(modifyArray)//["Eggs","Milk", "Apple", "peach"]

 

//使用下标语法从数组中检索值

print(modifyArray[2])//Apple 注:数组中的第一个项目的索引为0,而不是1

 

//使用下标语法来更改给定索引处的现有值

modifyArray[1] ="chicken"

print(modifyArray)//["Eggs","chicken", "Apple", "peach"]

modifyArray[0...2] = ["chicken","chicken","chicken"]

print(modifyArray)//["chicken","chicken", "chicken", "peach"]

//注:不能使用下标语法将新元素附加到数组的末尾。

//注:数组中最大的有效索引将始终为count - 1,因为数组从零开始索引。

 

//insert_at :) 在指定索引处将数据插入数组

modifyArray.insert("Green", at:1)

print(modifyArray)//["chicken","Green", "chicken", "chicken", "peach"]

 

//removeat :)从数组中删除一个元素

modifyArray.remove(at:0)

print(modifyArray)//["Green","chicken", "chicken", "peach"]

 

//removeLast()从数组中删除最后一个项目

modifyArray.removeLast()

print(modifyArray)//["Green","chicken", "chicken"]

 

//removeAll()移除数组的所有元素,变为空数组

modifyArray.removeAll()

print(modifyArray)//print(modifyArray)

 

3>.数组的遍历

//使用for-in循环遍历数组中的整组值

var iterateArray = ["Eggs","Apple"]

for itemin iterateArray {

    print(item)

}

/*

 Eggs

 Apple

 */

 

//enumerated()方法返回一个由整数和项组成的元组。 

for (index, value)in iterateArray.enumerated(){

    print("Item \(index):\(value)")

}

/*

 Item0: Eggs

 Item1: Apple

 */

 

 

二、集合 Sets

集合在集合中存储相同类型的不同值,没有定义的顺序

Sets的哈希值

  Swift的所有基本类型(例如StringIntDoubleBool)在默认情况下是哈希的,并且可以用作设置值类型或字典键类型。默认情况下,没有关联值的枚举值值也是可哈希的。

 

 

集合  Sets

集合在集合中存储相同类型的不同值,没有定义的顺序。

Swift的所有基本类型(例如StringIntDoubleBool)在默认情况下是哈希的,并且可以用作设置值类型或字典键类型。默认情况下,没有关联值的枚举值也是可哈希的。

Swift集合的类型为Set<Element>,其中Element是允许集合存储的类型。

 

1>.集合的创建

//创建和初始化空集

var letters =Set<Character>()//初始化元素为Character类型的空集

letters.insert("a")//插入一个元素a

letters = []//置为空集,但仍是Set<Character>类型

 

//使用数组创建集合

let mybooks:Set = ["ecev","cevev"]

var favoriteFruits:Set<String> = ["Apple","Peach"]

print(mybooks,favoriteFruits)//["ecev", "cevev"]["Apple", "Peach"]

 

2>.访问和修改集合

var modifySet:Set<String> = ["Apple","Peach"]

//count访问集合的子元素个数

print(modifySet.count)//2

 

//isEmpty判断集合是否为空

print(modifySet.isEmpty)//false

 

//insert_ :)为集合添加新元素

modifySet.insert("chicken")

print(modifySet)//["chicken", "Apple","Peach"]

 

//remove_ :)移除集合的指定元素

//removeAll()移除集合中的所有元素

modifySet.remove("Apple");

print(modifySet)//["chicken", "Peach"]

 

//contains_ :)判断集合是否包含特定项目

print(modifySet.contains("Apple"))//false

 

 

3>.集合的遍历

//使用for-in循环遍历集合中的值

for itemin modifySet{

    print(item)

}

/*

 chicken

 Peach

 */

 

4>.集合的合并

intersection(_:)创建一个只有两个公用集的值的新集。

symmetricDifference_ :)创建一个新集合,其值在两个集合中,但不能同时存在。

union_ :)创建一个包含两个集合中的所有值的新集合。

subtracting_ :)方法创建一个新的集合,其值不在指定集合中。

 

let oddDigits:Set = [1, 3, 5, 7,9]

let evenDigits:Set = [0, 2, 4, 6,8]

letsingleDigitPrimeNumbers:Set = [2, 3, 5, 7]

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

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

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

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

 

5>.集合元素和相等

== 确定两个集合是否包含所有相同的值。

isSubsetof :)方法来确定集合的所有值是否都包含在指定的集合中。

isSupersetof :)方法来确定集合是否包含指定集合中的所有值。

isStrictSubsetof :)isStrictSupersetof :)方法来确定集合是否为子集或超集,但不等于指定集。

isDisjointwith :)方法来确定两个集合是否具有任何共同的值。

 

字典Dictionary

字典存储相同类型的键和相同类型的值之间的关联,没有定义顺序。

Swift字典的类型为Dictionary<KeyValue>,其中Key是可用作字典键的值的类型,Value是字典为这些键存储的值的类型。

 

1>.字典的创建

//创建空字典

var namesOfIntegers = [Int:String]()

namesOfIntegers[16] ="sixteen"

namesOfIntegers = [:]

 

//直接初始化字典

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

var airports: [String:String] = ["YYZ":"Toronto Pearson", "DUB": "Dublin"]

 

2>.访问和修改字典

var provinceCity: [String:String] = ["Beijing":"Beijing","HeNan":"Zhengzhou"]

 

//count获取字典中键值对的个数

print(provinceCity.count)//2

 

//isEmpty判断字典中键值对的个数是否为0

print(provinceCity.isEmpty)//false

 

//使用适当类型的新键作为下标索引,并分配适当类型的新值

provinceCity["Shandong"] ="Jinan"

print(provinceCity)//["HeNan": "Zhengzhou","Shandong": "Jinan", "Beijing":"Beijing"]

 

//直接修改键对应的值

provinceCity["Shandong"] ="Qingdao"

//updateValue_forKey :) 设置或更新特定键的值。改方法字典值类型的可选值

provinceCity.updateValue("Jinan",forKey:"Shandong")

print(provinceCity)//["HeNan": "Zhengzhou","Shandong": "Jinan", "Beijing":"Beijing"]

 

删除键值对

//使用下标语法通过为该键分配值nil来从字典中删除键值对

provinceCity["Shandong"] =nil//

print(provinceCity)//["HeNan": "Zhengzhou","Beijing": "Beijing"]

 

//removeValueforKey :)方法从字典中删除键值对

provinceCity.removeValue(forKey:"Beijing")

print(provinceCity)//["HeNan": "Zhengzhou"]

 

字典的遍历

for (province, city)in provinceCity {

    print("\(province):\(city)")//HeNan: Zhengzhou

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值