Swift2-0基础_CollectionType(集合)


import Foundation

print("Hello, World!")

// Swift 语言提供 Arrays 、 Sets 和 Dictionaries 三种基本的集合类型用来存储集合数据。数组(Arrays)是有序 数据的集。集合(Sets)是无序无重复数据的集。字典(Dictionaries)是无序的键值对的集

// 1 数组

// 空数组
var emptyArrays = [Int]()
emptyArrays.append(3)
emptyArrays = []    // 现在是空数组,但是仍然是 [Int] 类型的

// 带有默认值得数组 把准备加入新 数组的数据项数量( count )和适当类型的初始值( repeatedValue )传入数组构造函数:
var defaultArrays = [Double](count: 3, repeatedValue: 0.0) // 等价于 [0.0,0.0,0.0]

// 两个数组相加创建一个数组
var defaultArrays2 = [Double](count: 2, repeatedValue: 1.1)
var newDefaulrArrays = defaultArrays + defaultArrays2

// 字面构造数组
var shoppingList:[String] = ["Eggs","Milk"];    // 字符串类型数组,数组里只有String可以被存取,String可以不用写,Swift会自动推断

// 访问和修改数组
let count = shoppingList.count  // 数组元素个数
if shoppingList.isEmpty {
    print("是空数组")
} else {
    print("不是空数组")
}
shoppingList.append("Apple")    // 添加新元素
// 使用加法赋值运算符( += )也可以直接在数组后面添加一个或多个拥有相同类型的数据项
shoppingList += ["Butter"]
shoppingList += ["A","B"]

// 取数据
var firstItem = shoppingList[0]
// 修改某一位置的数据
shoppingList[0] = "NewEggs"
// 修改一系列的数据
shoppingList[0...5] = ["C","D"]
// 在某个索引值之前添加数据
shoppingList.insert("insertString", atIndex: 0)
// 移除某一索引值的数据   可以返回这个删除的值
shoppingList.removeAtIndex(0)
let removeStr = shoppingList.removeAtIndex(0)
shoppingList.removeLast()
shoppingList.removeAll()
// 数组的遍历
var newArray = ["A","B","C","D","E"]
for item in newArray {
    print(item);
}

// 2 集合
print("2---集合")
// 集合类型的哈希值
/*     一个类型为了存储在集合中,该类型必须是可哈希化的--也就是说,该类型必须提供一个方法来计算它的哈希值。         一个哈希值是 Int 类型的,相等的对象哈希值必须相同,比如 a==b ,因此必须 a.hashValue == b.hashValue。     Swift 的所有基本类型(比如 String , Int , Double 和 Bool)默认都是可哈希化的,         可以作为集合的值的类型或者字典的键的类型 */

// 通过构造器语法创建一个特定类型的空集合
var letters = Set<Character>()  // 类型:Set<Character>
letters.insert("a")
// 一个set类型不能从数组中的字面量中独立地被推断出来,因此Set类型,必须是显示声明。如果通过一个数组字面量构造一个Set并且该数组字面量中的所有元素类型相同,那么无需写出set的具体类型,因为Swift的类型推倒功能
letters = []    // 类型:Set<Character>
if letters.isEmpty {
    
}
// 添加元素
letters.insert("b")
letters.insert("c")
letters.insert("e")
letters.insert("h")
// 删除元素
letters.remove("a")
// 检测是否含有某一元素
if letters.contains("a") {
    
}
// 集合元素的数量
print(letters.count)
// 遍历集合
for item in letters {
    print("集合的遍历\(item)");
}
// 集合操作
/* • 使用 intersect(_:) 方法根据两个集合中都包含的值创建的一个新的集合。 • 使用 exclusiveOr(_:) 方法根据在一个集合中但不在两个集合中的值创建一个新的集合。  • 使用 union(_:) 方法根据两个集合的值创建一个新的集合。 • 使用 subtract(_:) 方法根据不在该集合中的值创建一个新的集合。 */
let set1 : Set = ["abc","d","request","test"]
let set2 : Set = ["swe","qwer","df","abc","test"]
print("都包含的元素\(set1.intersect(set2).sort)")
print(set1.exclusiveOr(set2).sort())
print(set1.union(set2).sort())
print(set1.subtract(set2).sort())
// 集合成员的关系
/* • 使用“是否相等”运算符( == )来判断两个集合是否包含全部相同的值。 • 使用 isSubsetOf(_:) 方法来判断一个集合中的值是否也被包含在另外一个集合中。 • 使用 isSupersetOf(_:) 方法来判断一个集合中包含另一个集合中所有的值。 • 使用 isStrictSubsetOf(_:) 或者 isStrictSupersetOf(_:) 方法来判断一个集合是否是另外一个集合的子集合 或者父集合并且两个集合并不相等。 • 使用 isDisjointWith(_:) 方法来判断两个集合是否不含有相同的值 */
let equalRs1 : Set = [1,2,3]
let equalRs2 : Set = [1,2]
print(equalRs1 == equalRs2)                 // false
print(equalRs2.isSubsetOf(equalRs1))        // true
print(equalRs1.isSupersetOf(equalRs2))      // true
print(equalRs2.isStrictSubsetOf(equalRs1))  // true
print(equalRs1.isStrictSupersetOf(equalRs2))// true
print(equalRs1.isDisjointWith(equalRs2))    // false
print(equalRs2.isDisjointWith(equalRs1))    // false

// 3 字典
// 一个字典的 Key 类型必须遵循 Hashable 协议,就像 Set 的值类型。

// 空字典
var emptyDict = Dictionary<Int,String>()
emptyDict[1] = "one"
emptyDict = [:]
var emptyDic = [Int:String]()

// 创建字典
var dict1:[String:String] = ["1":"one","2":"two","3":"three"]
if dict1.isEmpty {
    
}
// 增删改查
dict1["4"] = "four"
dict1["4"] = "five"
dict1["5"] = nil
dict1.updateValue("four", forKey: "4")
let str = dict1["5"]
print(str)  // nil
dict1["4"] = nil    // 移除
print(dict1)
// removeValueForKey(_:) 方法也可以用来在字典中移除键值对。这个方法在键值对存在的情况下会移除该键 值对并且返回被移除的值或者在没有值的情况下返回 nil
dict1.removeValueForKey("1")

for (key,value) in dict1 {
    print("\(key) : \(value)")
}
for key in dict1.keys {
    print("key = \(key)")
}
for value in dict1.values {
    print("value = \(value)")
}

你可能感兴趣的:(集合,Collection,swift)