您的位置:首页 > 移动开发 > Swift

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

2017-02-23 16:19 274 查看
集合类型
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"]
 
//remove(at :)从数组中删除一个元素
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的所有基本类型(例如String,Int,Double和Bool)在默认情况下是哈希的,并且可以用作设置值类型或字典键类型。默认情况下,没有关联值的枚举值值也是可哈希的。
 
 
集合  Sets
集合在集合中存储相同类型的不同值,没有定义的顺序。
Swift的所有基本类型(例如String,Int,Double和Bool)在默认情况下是哈希的,并且可以用作设置值类型或字典键类型。默认情况下,没有关联值的枚举值也是可哈希的。
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>.集合元素和相等
==
确定两个集合是否包含所有相同的值。
isSubset(of :)方法来确定集合的所有值是否都包含在指定的集合中。
isSuperset(of :)方法来确定集合是否包含指定集合中的所有值。
isStrictSubset(of :)或isStrictSuperset(of
:)方法来确定集合是否为子集或超集,但不等于指定集。
isDisjoint(with :)方法来确定两个集合是否具有任何共同的值。
 
字典Dictionary
字典存储相同类型的键和相同类型的值之间的关联,没有定义顺序。
Swift字典的类型为Dictionary<Key,Value>,其中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"]
 
//removeValue(forKey :)方法从字典中删除键值对
provinceCity.removeValue(forKey:"Beijing")
print(provinceCity)//["HeNan": "Zhengzhou"]
 
字典的遍历
for (province, city)in
provinceCity {
   
print("\(province):\(city)")//HeNan: Zhengzhou
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: