zoukankan      html  css  js  c++  java
  • 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])
    }
  • 相关阅读:
    Synalyze It! Pro v1.11.2
    C# 打开浏览器并 POST 提交信息
    Cocos2d-x iOS Mac环境编译出错 can't locate file for: -lpng -ljpeg -ltiff -lwebp -lfreetype -lwebsockets -lcurl
    Visual Studio 2008用过一段时间后编辑器自动提示(智能提示:Intellisense)功能失效
    iOS根据坐标数据点所在的坐标区域来动态显示到可视范围
    iOS关于百度地图坐标偏移的处理
    WPF画图性能问题
    Xcode Error: The service is invalid (0XE8000022) 解决方法
    引用-定位大量占用CPU的问题
    Semaphore信号量
  • 原文地址:https://www.cnblogs.com/fanxiaocong/p/6411364.html
Copyright © 2011-2022 走看看