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 中的數組是類型安全的,數據值在被存儲進入某個數組以前類型必須明確,而且它們中包含的類型必須明確,代碼以下:app

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

Java數組申明代碼以下:函數

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

2. 訪問和修改數組oop

Java主要使用集合對數組封裝,對外提供API,在Swift中,數組有不少API供開發者調用,而Java數組沒有不少API,經常使用的就是length這個屬性。下面介紹一些Swift中關於數組的API。spa

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。code

2.1 修改數組元素blog

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 數組的遍歷ci

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)
相關文章
相關標籤/搜索