swift 集合类型(一)

时间:2021-12-07 20:42:51

基本的数组结构Array:

 

var shoppingList: String[] = ["Eggs", "Milk"]

 

这个shoppingList和传统意义上的数组是没区别的。但它却又可以这样:

println("The shopping list contains \(shoppingList.count) items.")

shoppingList.count的这个count是T(继承自ArrayType)的属性,可以获取当前数组的长度。

同时,shoppingList还可以通过 append(只能添加单个元素)或者+=(可添加一个或者多个元素)运算符添加新元素。

 var shoppingList: String[] = ["Eggs", "Milk"]
        shoppingList.append("Banana")
        shoppingList += "Apple"
        shoppingList += ["WaterMelon","Tomato"]

也可以直接通过下标来替换一个或者多个元素

        var shoppingList: String[] = ["Eggs", "Milk"]
        shoppingList.append("Bananas")
        shoppingList += "Apples"
        shoppingList += ["WaterMelons","Tomatos","Chocolate"]
        shoppingList += ["",""]
        shoppingList[7...8] = ["Cola","Cookies"]

  

可以通过下标来获取指定位置的一个或者多个元素

var firstElement = shoppingList[0]
var mulElements = shoppingList[4...6]

 

在指定位置插入新元素

shoppingList.insert("Cheese",atIndex: 4)
        for item in shoppingList{
            println(item);
        }

移除元素有2种方法,1,直接移除数组最后一个元素。 2,移除指定下标位置的元素

        shoppingList.removeLast()
        for item in shoppingList{
            println(item);
        }
        shoppingList.removeAtIndex(0)
        for item in shoppingList{
            println(item);
        }

如果想移除数组中的某个指定的元素,没有直接的方法。只能遍历并移除:

        for (index,value) in enumerate(shoppingList){
            println("Item \(index+1): \(value)")
            if(value == "Bananas"){
                shoppingList.removeAtIndex(index);
            }
        }

其实这个方法按微软的说法的话,是不够严谨的。removeAtIndex方法执行后,返回值是一个T类型。应该是shoppingList的一个copy,应该是不可以影响到当前操作的数组的。我跟踪了一下,事实上这个方法目前是会影响到当前的数组的。

 

数组初始化

可以直接初始化指定数据类型的空数组,留着后面再填充数据。

var someInts = Int[]()
println("someInts is of type Int[] with \(someInts.count) items.")

可看到输出的结果为0个items在数组中。

也可以直接指定大小的空数组,同时指定初始化数据:

var threeDoubles = Double[](count:3, repeatedValue:0.0)
println("threeDoubles is of type Double[] with \(threeDoubles.count) items")

可以看到,当前数组中有3个值都是0.0的item. 这个跟T类型的构造函数有关:

init(count: Int, repeatedValue: T)

  

总结:

1)swift的数组是通过[]来定义数据类型,()来指定数据的。

2)可以通过insert,append和+=操作符添加数组

3)也可以通过构造函数init(count: Int, repeatedValue: T)来初始化指定大小和初始值的数组

4)可以通过removeLast和removeAtIndex来移除指定的item

5)可以通过下标来获取或者设置指定的item

 

        var shoppingList: String[] = ["Eggs", "Milk"]
        shoppingList.append("Bananas")
        shoppingList += "Apples"
        shoppingList += ["WaterMelons","Tomatos","Chocolate"]
        shoppingList += ["",""]
        shoppingList[7...8] = ["Cola","Cookies"]
        var firstElement = shoppingList[0]
        var mulElements = shoppingList[4...6]
        shoppingList.insert("Cheese",atIndex: 4)
//        for item in shoppingList{
//            println(item);
//        }
        shoppingList.removeLast()
//        for item in shoppingList{
//            println(item);
//        }
        shoppingList.removeAtIndex(0)
//        for item in shoppingList{
//            println(item);
//        }
        for (index,value) in enumerate(shoppingList){
            println("Item \(index+1): \(value)")
            if(value == "Bananas"){
                shoppingList.removeAtIndex(index);
            }
        }
        
        var someInts = Int[]()
        println("someInts is of type Int[] with \(someInts.count) items.")
        
        var threeDoubles = Double[](count:3, repeatedValue:0.0)
        println("threeDoubles is of type Double[] with \(threeDoubles.count) items")


        //println("The fruits are \(mulElements.count) at position 4-6 in shopping list")
        //println("The shopping contains \(shoppingList.count) items")