Swift5.x入门05--Array与Dictionary

数组的使用

定义不可变数组
let array1 = ["1","2","3"]
let array2: [String] = ["1","2","3"]
let array3: Array<String> = ["1","2","3"]
//可同时存放任意类型的数据
let array4 = [18,"20",1.88] as [Any]
let array5: [Any] = [18,"20",1.88]
let array6: Array<Any> = [18,"20",1.88]
定义可变数组
var arr1 = ["1","2","3"]
var arr2: [String] = ["1","2","3"]
var arr3: Array<String> = ["1","2","3"]
//可同时存放任意类型的数据
var arr4 = [18,"20",1.88] as [Any]
var arr5: [Any] = [18,"20",1.88]
var arr6: Array<Any> = [18,"20",1.88]
定义空数组
var datas1 = [String]()
var datas2: [String] = Array()
var datas3 = Array<String>()
var datas4: [String] = []
数组的基本操作
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        //数组的基本操作
        let arr = ["li","yanyan"]
        //遍历
        for data in arr {
            print(data)
        }
        
        //添加 -- 通过下标
        var arr1 = ["li","yanyan"]
        print("数组容量 = \(arr1.capacity)")
        arr1.append("xie")
        print("数组容量 = \(arr1.capacity)")
        arr1.append("aaa")
        arr1.append("bbb")
        print("数组容量 = \(arr1.capacity)")
        print(arr1)
        print("数组元素数量 = \(arr1.count)")
        //往指定的index位置插入元素
        arr1.insert("kkk", at: 2)
        print(arr1)
        print("数组元素数量 = \(arr1.count)")
        
        //修改
        arr1[0] = "wang"
        print(arr1)
        
        //删除第一个
        arr1.removeFirst()
        print(arr1)
        
        //删除最后一个
        arr1.removeLast()
        print(arr1)
        
        arr1.remove(at: 1)
        print(arr1)
        
        //删除所有元素,但保留容量空间
        arr1.removeAll(keepingCapacity: true)
        print(arr1)

        //删除满足指定条件的数组元素
       arr1.removeAll { (str: String) -> Bool in
          return str == "a"
       }
        
        print("数组容量 = \(arr1.capacity)")
        print("数组元素数量 = \(arr1.count)")
    }
}
  • 调试结果如下:
Snip20210425_70.png
  • for data in arr:数组元素的遍历;
  • arr1.append:添加元素;
  • arr1.insert("kkk", at: 2):往指定的index位置插入元素;
  • arr1[0] = "wang":通过下标,修改数组元素;
  • arr1.removeFirst():删除第一个元素;
  • arr1.removeLast():删除最后一个元素;
  • arr1.remove(at: 1):删除指定index位置的元素;
  • arr1.removeAll(keepingCapacity: true):删除所有元素,但保留容量空间;
  • arr1.capacity :获取数组的容量大小;
  • arr1.count:获取数组元素的个数;
数组的容量
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        //数组容量
        //定义一个存放字符串的数组,并没有初始化分配内存空间
        var arr:[String]
        //需要初始化,分配内存空间才能添加数据元素
        //arr.append("li")
        arr = [String]()
        print("数组容量 = \(arr.capacity)")
        arr.append("li")
        print(arr)
        
        for i in 0..<10 {
            arr.append("zhangsan\(i)")
            print("添加元素" + arr[i] + "--数组容量 = \(arr.capacity)")
        }
        print(arr)
    }
}
Snip20210425_72.png
  • var arr:[String]:定义一个存放字符串的数组,并没有初始化分配内存空间;需要初始化,分配内存空间才能添加数据元素,否则直接添加会报错;
  • arr = [String]():初始化数组,此时的容量为0;
  • 在for循环中向可变数组中添加元素,看到数组容量以两倍之前的容量,进行动态扩容,详情原理可见 [数据结构与算法03 -- 动态数组];(https://www.jianshu.com/p/f2b660b1e7dc)
数组的合并
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        var arr1:[Any] = ["li","yanyan"]
        let arr2 = ["xie","sf"]
        
        let arr3 = ["haha",18] as [Any]
    
        arr1 += arr2
        arr1 += arr3
        
        print(arr1)
    }
}
Snip20210425_74.png
  • var arr1:[Any] = ["li","yanyan"]:定义并初始化一个存放任意类型的数组arr1;
  • let arr2 = ["xie","sf"]:定义并初始化一个存放字符串的数组arr2;
  • let arr3 = ["haha",18] as [Any]:定义并初始化一个存放任意类型的数组arr2;
  • arr1 += arr2:将arr2中元素合并到arr1中;
  • arr1 += arr3:将arr3中元素合并到arr1中;
  • 被合并数组中元素,必须要与目标数组中的元素类型一致,否则会报错;

字典的使用

定义字典的三种方式
var dict1 = ["name":"yanzi","age":"30","height":"175"]
var dict2: [String:String] = ["name":"yanzi","age":"30","height":"175"]
var dict3:Dictionary<String,String> = ["name":"yanzi","age":"30","height":"175"]
定义空字典的三种方式
var dic1 = [String:String]()
var dic2: [String:String] = [:]
var dic3: [String:String] = Dictionary()
var dic4: Dictionary<String,String> = [:]
字典的增删改
var dic1 = [String:String]()

//增
dic1["name"] = "yanzi"
dic1["age"] = "30"
dic1["height"] = "175"

for (key,value) in dic1 {
    print("key \(key) -- value \(value)")
}

//删
dic1.removeValue(forKey: "name")

for (key,value) in dic1 {
    print("key \(key) -- value \(value)")
}
字典的遍历
var dict1 = ["name":"yanzi","age":"30","height":"175"]
for (key,value) in dict1 {
    print("key \(key) -- value \(value)")
}
字典的合并
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        //字典的合并
        var dic1:[String:Any] = ["name":"liyanyan","age":30]
        let dic2:[String:Any] = ["title:":"haha","age":32]
        
        //将dic2合并到dic1
        for (k,v) in dic2 {
            dic1[k] = v
        }
        print(dic1)
    }
}
Snip20210425_75.png
  • 通过循环的方式,实现字典之间的合并,合并的规则与设置字典的键值对一样,若key已存在,覆盖旧值,若key不存在,则新增键值对;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容