swift - 字典和集合
//: Playground - noun: a place where people can play
import UIKit
var str = "Hello, playground"
//字典 Dictionary (键值,数据对应的无序数据集合)
//声明字典
var dict:[String : String] = ["swift":"雨燕","Python":"大蟒","java":"爪哇岛","groovy":"时髦的"]
//var dict1:Dictionary<String,String> = ["swift":"雨燕","Python":"大蟒","java":"爪哇岛","groovy":"时髦的"]
//空字典的声明
var emptyDictionary1:[String:Int] = [:]
var emptyDictionAry2:Dictionary<Int, String> = [:]
var emptyDictionAry3 = [String:String]()
var emptyDictionary4 = Dictionary<Int,Int>()
print(dict["swift"])
dict["C++"]
dict.count
dict.isEmpty
emptyDictionary1.isEmpty
Array(dict.keys)
Array(dict.values)
for key in dict.keys {
print(key)
}
for value in dict.values {
print(value)
}
for (key, value) in dict {
print("\(key):\(value)")
}
let dict1 = [1:"A",2:"B",3:"C"]
let dict2 = [1:"A",2:"B",3:"C"]
dict1 == dict2//字典是无序的
//字典的操作
var user = ["name":"bobobo","passwork":"liuyubo","occupation":"programmer"]
//字典元素的修改
user["occupation"] = "freelancer"
user.updateValue("imooc", forKey: "password")
let oldPassword = user.updateValue("imooc", forKey: "password")
if let oldPassword = oldPassword,
let newPassword = user["password"] , oldPassword == newPassword {
print("注意:修改后的密码和之前一样,可能导致安全问题")
}
//添加元素
user["email"] = "imooc@imooc.com"
user
user.updateValue("imooc.com", forKey: "website")
user
//删除元素
user["website"] = nil
user
//user.removeValue(forKey: "email")
//user
if let email = user.removeValue(forKey: "email") {
print("电子邮箱\(email) 删除成功")
}
user.removeAll()
////集合 Set
//var skillsOfA : Set<String> = ["swift","oc","oc"]//集合自动去重,即集合中的元素是唯一的
//
//var emptySet1:Set<Int> = []
//var emptySet2 = Set<Double>()
//
//var vowels = Set(["A","E","I","O","U"])
//var skillsOfB:Set = ["HTML","CSS"]
//
////基本方法
//skillsOfA.count
//
//let set:Set<Int> = [2,2,2,2]
//set.count
//
//skillsOfA.isEmpty
//emptySet1.isEmpty
//
//let e = skillsOfA.first
//skillsOfA.contains("swift")
//
//for skill in skillsOfB {
// print(skill)
//}
//
//let setA = [1,2,3]
//let setB = [3,2,1]
//
//setA == setB//无序,没有重复的元素
//集合的相关操作
var skillsOfA: Set<String> = ["swift","OC"]
var skillsOfB: Set<String> = ["HTML","CSS","Javascript"]
var skillsOfC: Set<String> = []
skillsOfC.insert("swift")
skillsOfC.insert("HTML")
skillsOfC.insert("CSS")
skillsOfC.insert("CSS")
////删除
//skillsOfC.remove("CSS")
//skillsOfC
//skillsOfC.remove("Javascript")
//skillsOfC
//
//if let skill = skillsOfC.remove("HTML") {
// print("HTML is Removed")
//}
//
//skillsOfC.removeAll()
//并集 union unionInPlace
skillsOfA.union(skillsOfC)//不改变skillsOfA
skillsOfA
//skillsOfA.formUnion(skillsOfC)//改变skillsOfA
//skillsOfA
//交集
skillsOfA.intersection(skillsOfC)
//减法
skillsOfA.subtract(skillsOfC)
skillsOfC.subtract(skillsOfA)
//异或
skillsOfA.union(["java","android"])
var skillsOfD:Set = ["swift"]
skillsOfD.isSubset(of: skillsOfA)
skillsOfD.isStrictSubset(of: skillsOfA)
skillsOfA.isSuperset(of: skillsOfD)
//总结, 选择合适的数据结构
//数组:有序
//集合:无序,唯一性,提供集合操作,快速查找
//字典:键-值数据对