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

Posted 自相矛盾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift和Java关于集合类型的比较相关的知识,希望对你有一定的参考价值。

1. 数组申明

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。

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

字典和Map集合很像,一个定义拥有一个或者多个键值对的字典集合的简单语句,一个键值对是一个key和一个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)")
        }

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

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

 

以上是关于Swift和Java关于集合类型的比较的主要内容,如果未能解决你的问题,请参考以下文章

关于swift中的字符串和集合

比较 Java 的 lambda 表达式和 Swift 的函数类型

swift语法和java的比较

Swift和Java控制流比较

Java之有序集合&hashMap

比较 C# 中的字符串片段并从集合中删除项目