Swift学习笔记七:集合

数组 Array

  • 数组的创建
    • OC 中使用 @[] 定义数组, Swift 中使用 [] 定义数组 
    • [类型] 表示数组中存放的都是该类型的元素
    • Swift 中数组中的元素可以是基本数据类型
// 创建数组
var array1: Array<Int>
vararray2:Array<Int> = [2,3]
var array3: [Int]
var array33 = [Int]()
 
 
array1 = Array(arrayLiteral: 1, 2, 3, 4)
 
var array4 = Array(repeatElement("A", count: 10))
vararray44 = Array(repeating:0.0, count:3
)
 
// 创建空数组
var array5: Array<Int> = []
var array6: [Int] = Array()
 
// 如果数据中的类型不一致, 要指定类型  Array<Any>
let array7: Array<Any> = ["1", 1, p]
 
 
  • 数组的遍历 
// 1. 按照下标遍历
for i in 0..<array.count
{ 
   print(array[i])
}
 
// 2. for in 遍历
for i in array
{ 
   print(i)
}
 
// 3. enum block 遍历, 同时遍历 下标 和 元素
for i in array.enumerated()
{  
   print(i)
}
 
// 4. 遍历 下标 和 元素
for (index, element) in array.enumerated()
{  
   print("\(index) --- \(element)")
}
 
 
// 5. 反序遍历
for i in array.reversed()
{
   print(i)
}
 
for s in array.enumerated().reversed()
{
   print(s)
}

 

  • 数组的增 删 改 合并 
// OC 中数组分 可变 NSMutableArray()   /  不可变 NSArray()
// Swift 中数组 可变 var / 不可变 let
var arr = ["1", "2", "3"]
 
// 追加元素
arr.append("0")
 
// 修改, 通过下标定位
arr[0] = "AAA"
 
 
// 数组越界
--- Index out of range
// array[5] = "XXX"

// 删除
arr.remove(at: 3)
 
// 删除全部, 并且保留空间
arr.removeAll(keepingCapacity: true)
 
 
// 数组合并
var arr1 = ["3", "11", "2"]
var arr2 = ["AAA","CCC","BB","FFF"]
 
// 注意: 要合并数组的两个类型必须一致
arr1 += arr2
 
 
  • 数组的排序
// 数组排序
var array1 = Array(arrayLiteral: 1, 2, 3, 4)
 
// 数组排序 默认是 升序排列
array1.sort()
 
// 降序排列
array1.sort(by: >)
 
// 升序排列
array1.sort(by: <)

 

 
 
 
字典 Dictionary
  • OC 定义字典 @{},  Swift 定义字典 [key : value]
// 字典的声明和创建
var dic1: Dictionary<Int, String>
var dic2: [Int:String]
var dic3 = Dictionary(dictionaryLiteral:(1,"1"), (2,"2"))
var dic4 = [1:"1”, 2:"2"]
var dic5 = [Int : String]()

 

  • 字典的增 删 改 
var dict: [String : Any] = ["name" : "", "age" : 18]
 
// 字典中的新增与修改是通过 KEY 取值: 如果 KEY 存在, 则表示修改; 如果 KEY 不存在, 则表示新增

// 新增
dict["title"] = "AAA"
 
 
// 修改
dict["name"] = ""
 
 
dict.updateValue("00000000", forKey: "name")
dict.updateValue("ppp", forKey:"xxx")
 
 
// 删除: 如果存在 对应的 Key, 则删除; 如果不在 对应的 Key, 则不进行操作
dict.removeValue(forKey: "age")
print(dict)
 
dict.removeValue(forKey: "age")
print(dict)

 

  • 字典的遍历
let dict1: [String : Any] = ["name" : "", "age" : 18, "title" : "名称"]
 
for e in dict1
{
   print(e)
}
 
for (key, value) in dict1
{
   print("\(key) --- \(value)")
}
 
 
// 合并
var dict3: [String : Any] = ["name" : "", "age" : 18, "title" : "名称"]
let dict4: [String:Any] = ["name":"","height":1.8]
 
// 遍历, 并依次设置
for (key, value) in dict4
{
   dict3[key] = value
}

 

 
集合 Set
  • Set 的创建
// 创建集合
var set1: Set<Int> = [1, 2, 3, 4]
var set2:Set<String> = Set(arrayLiteral:"1","2","3")
var set3 = Set(arrayLiteral:1,2,3)
 
 
var set4: Set<Int> = []

 

  • 集合的常用操作
// 获取其中元素个数
set1.count
 
 
// 判断集合是否为空集合
if set1.isEmpty
{
   print("集合为空")
}
 
// 判断集合中是否包含某个元素
if set1.contains(2)
{  
   print("集合中包含此元素")
}
 
// 插入
set1.insert(5)
 
// 获取指定位置的下标
var setIndex = set1.index(of: 4)
//移除指定下标的元素
set1.remove(at: setIndex!)
 
// 移除指定元素
set1.remove(1)
 
  • 集合的数学运算
var setN: Set<Int> = [1, 2, 3, 4, 5, 6]
varsetM:Set<Int> = [4, 5, 6, 7, 8]
 
// 进行 intersection 运算:取两个集合的交集
var setInter = setN.intersection(setM)
 
// 进行 symmertricDifference 取两个集合不相同的部分
var setDif = setN.symmetricDifference(setM)
 
// 进行 集合的 union 运算,并集
var setUni = setN.union(setM)
 
// 进行集合的 subtracting 运算:用一个集合去截取另一个集合
var setSub = setN.subtracting(setM)
 
 
setN == setM
 
 
var setSub1: Set<Int> = [1, 2, 3]
 
// 判断是否是子集或者父集
setSub1.isSubset(of: setN)
setN.isSuperset(of:setSub1)
 
// 判断是否是真子集或者真父集
setSub1.isStrictSubset(of: setN)
setN.isStrictSuperset(of: setSub1)

 

  • 集合的遍历
var setSub1: Set<Int> = [1, 2, 3]
 
for item in setSub1
{
   print(item)
}
 
for item in setSub1.enumerated()
{
   print(item)
}
 
for (index, item) in setSub1.enumerated()
{
   print("\(index) : \(item)")
}
 
for index in setSub1.indices
{
   print(setSub1[index])
}

 

转载于:https://www.cnblogs.com/fanxiaocong/p/6411364.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值