Swift- 集合

//一. 数组(Array)
        //同 OC 一样, array 是有序的, 其它两个无序
        //可变 var, 不可变 let
        //Array(Dictionarie, Sett)类型写法: Array<存储数据类型> 或者 [存储数据类型] 一般使用第二种
        //1. 数组初始化方法,创建一个空数组
        var someInts = Array<Int>()
//        var someInts = []()
        print("someInts is of type [Int] with \(someInts.count) items")
        //如果(通过函数参数或者已知类型的值),已知元素类型,可以用 [] 语句创建一个空数组
        someInts.append(3) //添加一个新元素
        someInts = []
        
        //2. 创建有 n 个相同元素的数组
        var threeDoubles = Array(repeatElement(0.0, count: 3))
        print(threeDoubles)
        
        //3. 合并数组, 两个数组中元素类型必须一样
        var anotherThreeDoubles = Array(repeatElement(1.0, count: 3))
        var sixDoubles = threeDoubles + anotherThreeDoubles
        
        //4. 用数组语法创建一个数组
        var shoppingList: [String] = ["Eggs", "Milk", "Bread"]
        //可简写为 var shoppingList = ["Eggs", "Milk", "Bread"]
        //获取元素个数 count
        print("The shopping list contains \(shoppingList.count) items.")
        
        //5. 判断数组是否为空 isEmpty
        if shoppingList.isEmpty {
            print("The shopping list is empty.")
        }else {
            print("The shopping list is not empty.")
        }
        
        //6. 数组中添加元素 append(_:)
        shoppingList.append("Flour")
        
        //7. 添加一个数组也可以用 +=
        shoppingList += [" Baking Powder"]
        shoppingList += ["Chocolate Spread", "Cheese", "Butter"]
        
        //8. 获取数组中的元素
        var firstItem = shoppingList[0]
        
        //9. 修改数组中的元素
        shoppingList[0] = "Six eggs"
        //用 range 修改多个值, 修改的个数和赋值的个数可以不一样
        shoppingList[4...6] = ["chicken", "pork"] //"Six eggs", "Milk", "Bread", "Flour", " Baking Powder", "Chocolate Spread", "Cheese", "Butter"] 中下标为 4, 5, 6 的三个元素被 替换为两个元素
//        print(shoppingList)
        
        //10. 往数组中插入元素
        shoppingList.insert("Maple Syrup", at: 0)
        
        //11. 移除数组中的元素, 并将移除的元素返回, 移除后第一个元素变为 Six eggs
        let mapleSyrup = shoppingList.remove(at: 0)
        //移除最后一个元素, 同样将移除的元素返回
        let pork = shoppingList.removeLast()
       
        //12. 遍历数组
        for item in shoppingList {
            print(item)
        }
        //用 enumerated() 方法遍历,返回值为元组,元组包括元素下标和元素值
        for (index, value) in shoppingList.enumerated() {
            print("Item \(index): \(value)")
        }
//        Item 0: Six eggs
//        Item 1: Milk
//        Item 2: Bread
//        Item 3: Flour
//        Item 4: chicken
//        Item 5: pork
    
        
        //二. 集合(Set)
        //1. 创建集合
        //(1) Swift 中的集合类型写法为 Set<类型>
        var letters = Set<Character>()
        print("letters is of type Set<Character> with \(letters.count) items.")
        letters.insert("a")
        //如果已知为集合类型,可以用创建空数组的语法创建一个空集合, letters 此时为空集合,但是仍然是 Set<Character> 类型的
        letters = []
        
        //(2) 用数组初始化一个集合
        //set 类型不能从一个数组语句单独推出, 所以类型 Set 必须声明. 又,因为 Swift 的类型推断,如果用数组语法初始化 Set 而且集合中元素的类型相同,可以不必写元素的类型
        var favoriteGenres: Set<String> = ["Rock", "Classical", "Hip hop"]
        var fav: Set = ["apple", "huawei"]
        
        //2. Set 也有 count 和 isEmpty 属性
        
        //3. Set 插入值
        favoriteGenres.insert("Jazz")
        
        //4. Set 删除值,
        //如果集合中包含该值移除该值并返回, 否则返回 nil
        if let removedGenre = favoriteGenres.remove("Rock") {
            print("\(removedGenre)? I'm over it")
        } else {
            print("I never much cared for that.")
        }
        
        //5. 检查 Set 是否有某个值,用 contains 属性
        if favoriteGenres.contains("Funk") {
            print("I get up on the good foot.")
        } else {
            print("It's too funky in here.")
        }
        
        //6. 遍历 Set
        for genre in favoriteGenres {
            print(genre)
        }
        // Jazz
        // Hip hop
        // Classical
        //集合中的元素是无序的,用 sorted() 可以按 < 顺序输出
        for genre in favoriteGenres.sorted() {
            print("\(genre)")
        }
        // Classical
        // Hip hop
        // Jazz
        
        //7. 集合的运算
        //(1) 交集(union), 并集(intersection), symmetricDifference(a 并 b 减 a 交 b), subtracting (a 减 a 交 b)
        let oddDigits: Set = [1, 3, 5, 7, 9]
        let evenDigits: Set = [0, 2, 4, 6, 8]
        let singleDigitPrimeNumbers: Set = [2, 3, 5, 7]
        oddDigits.union(evenDigits).sorted() //[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
        oddDigits.intersection(evenDigits).sorted() // []
        oddDigits.subtracting(singleDigitPrimeNumbers).sorted() //[1, 9]
        oddDigits.symmetricDifference(singleDigitPrimeNumbers).sorted() //[1, 2, 9]
        
        //(2) 子集isSubset, 父集isSuperset, 完全子集isStrictSubset, 完全父集isStrictSuperset, 不想交isDisjoint, 相等 ==
        //返回 Bool 值
        let houseAnimals: Set = ["

猜你喜欢

转载自blog.csdn.net/leecsdn77/article/details/80706962