Swift和Java关于集合类型的比较

1. 数组申明以及相关API介绍

1.1 相关API代码如下

// 添加元素
array.append("4")
// 删除
array.removeAll() // 移除所有元素 包括数组开辟的空间 array = nil
array.removeAll(keepCapacity: true) // 移除所有元素 但 保留数组开辟的空间 array.count = 0
array.removeAtIndex(2) // 移除对应下标下的元素
array.removeFirst() // 移除第一个元素
array.removeLast() // 移除最后一个元素

Swift: Swift 中的数组是类型安全的,数据值在被存储进入某个数组之前类型必须明确,并且它们中包含的类型必须明确,代码如下:

let array :Array<String>  = ["Eggs", "Milk"]
var array1 : [String] = ["Eggs", "Milk"]
var array2 = ["Eggs", "Milk"]

Java数组申明代码如下:

String[] array = {"Eggs","Milk"};

2. 访问和修改数组

Java主要使用集合对数组封装,对外提供API,在Swift中,数组有很多API供开发者调用,而Java数组没有很多API,常用的就是length这个属性。下面介绍一些Swift中关于数组的API。

var array : [String] = ["Eggs", "Milk"]
        array.append("Flour")
        array += ["Chocolate Spread","Cheese","Butter"]
        if array.isEmpty {
            print("array is empty")
            
        }else{
            print("array is not empty")
            print("the first item is (array[0])")
        }

这段代码主要是关于数组非空、取值和添加数组item的API。

2.1 修改数组元素

var array : [String] = ["Eggs", "Milk","Chocolate Spread","Cheese","Butter"]
        array[0] = "big Eggs"//修改数组第一个元素
        array[1...3] = ["big Milk","big Chocolate Spread","big Cheese"]
       //修改数组第二个到第四个元素
        for item in array{
            print("the item is (item)")
     }

2.2 数组插入元素和删除元素

var array : [String] = ["Eggs", "Milk","Chocolate Spread","Cheese","Butter"]
        array.insert("test insert", atIndex: 0)
        array.removeAtIndex(4)
        for item in array{
            print("(item)")
        }

2.3 数组的遍历

for in方式,代码如下:

var array : [String] = ["Eggs", "Milk","Chocolate Spread","Cheese","Butter"]
        for item in array{
            print(item)
        }

如果我们同时需要每个数据项的值和索引值,可以使用全局enumerate函数来进行数组遍历。EnumerateSequence返回一个由每一个数据项索引值和数据值组成的元组。我们可以把这个元组分解成临时常量或者变量来进行遍历:

 var array : [String] = ["Eggs", "Milk","Chocolate Spread","Cheese","Butter"]
        for(index, value) in EnumerateSequence(array){
            print("Item (index + 1): (value)")
        }

2.4 数组初始化

数组初始化API如下:

var array = [String](count: 3, repeatedValue: "item")
var someInts = [Int]()//申明一个空数组

总结:以上就是关于Swift数组操作的一些笔记,和Java不同,Swift给数组操作提供了大量的API。

2.5 将数组转化为元组进行遍历

var array:[String] = ["1", "2", "3"]
        // 元组遍历
        for (index, value) in array.enumerate() {
            print("index=(index), value=(value)")
        }

3. Swift字典和Java的Map集合比较

字典和Map集合很像,一个定义拥有一个或者多个键值对的字典集合的简单语句,一个键值对是一个key和一个value的结合体。

Swift字典API如下

// 字典
// 创建字典也要指出字典的类型 用[] 没有 {}
var dic:[String:AnyObject] = ["1": "you", "2": "wo"]
var dic1:[String:AnyObject] = ["2": "f", "3": "sss", "5": "sdf"]
// 增加和更新键值对
dic["3"] = "mm" // 如果字典中有这个 key 那就是更新 如果没有就是 添加
// 删除键值对
dic.removeAll() // 移除所有元素 包括数组开辟的空间 dic = nil
dic.removeAll(keepCapacity: true) // 移除所有元素 但 保留数组开辟的空间 dic.count = 0
dic.removeAtIndex(dic.indexForKey("1")!) // 注意此处的 !   移除对应下标下的元素
dic.removeValueForKey("1") // 移除对应下标下的元素
dic.keys  // 所有 key
dic.values // 所有 value

Swift字典定义,代码如下:

var airports : [String: String] = ["TYO": "Tokyo", "DUB": "Dublin"]
var airports1 = ["TYO": "Tokyo", "DUB": "Dublin"]
//在Swift中定义字典

3.1 读取和修改字典

Swift修改字典API如下:

airports["LHR"] = "London Heathrow"
// "LHR"对应的值 被改为 "London Heathrow
airports.updateValue("London Heathrow", forKey: "LHR")
// "LHR"对应的值 被改为 "London Heathrow

字典删除操作,代码如下:

airports["APL"] = nil
// APL现在被移除了
airports.removeValueForKey("LHR")
// APL现在被移除了

3.2 字典遍历

我们可以使用for-in循环来遍历某个字典中的键值对。每一个字典中的数据项都由(key, value)元组形式返回,并且我们可以使用临时常量或者变量来分解这些元组,代码如下:

var airports : [String: String] = ["TYO": "Tokyo", "DUB": "Dublin"]
        for (airportCode, airportName) in airports{
            print("the airportCode is (airportCode) and the airportName is (airportName)")
        }
        print("anthor loop in dictionary")
        for airportCode in airports.keys{
            print("airportCode = (airportCode)")
        }

字典遍历另一种方法

// 普通便利
for item in airports.enumerate() {
    print(item)
}

如果我们只是需要使用某个字典的键集合或者值集合来作为某个接受Array实例 API 的参数,可以直接使用keys或者values属性直接构造一个新数组,代码如下:

let airportCodes = Array(airports.keys)
// airportCodes is ["TYO", "LHR"]

 3.3 合并两个字典

var dic:[String:AnyObject] = ["1": "you", "2": "wo"]
        var dic1:[String:AnyObject] = ["2": "f", "3": "sss", "5": "sdf"]
        for item in dic.keys {
            dic1[item] = dic[item]
        }
        for item in dic1{
            print(item)
        }
// 结果如下
("3", sss)
("2", wo)
("1", you)
("5", sdf)
原文地址:https://www.cnblogs.com/xumaodun/p/5574763.html