04.Swift集合

//集合(set):用来存储相同类型并且没有顺序的值,当顺序不重要 或者 希望每个元素只出现一次时,用集合 而不用数组

//1.定义
var letters = Set() //<>中是允许该集合存储的类型 Character是字符类型
print("定义了一个空的字符集合,元素个数为:\(letters.count)")
letters.insert("a")//集合中插入了一个字符"a"
letters = []//集合又被置空了,但他仍然是一个字符型(Character)集合

var favoriteSet: Set = ["玫瑰","小布丁","钓鱼"]
var favoriteSet2: Set = ["睡觉","吃","玩"]//如果赋值是同一类型,定义时可以不写
print("集合的定义加赋值:\(favoriteSet),\(favoriteSet2.count)")
if favoriteSet2.isEmpty{
    print("集合为空")
}else{
    print("该集合不为空:\(favoriteSet2)")
}

//2.增加、删除、查询、遍历
favoriteSet2.insert("羽毛球")
print("给集合增加元素:\(favoriteSet2)")

if let removeSetValue = favoriteSet2.remove("玩") {
    print("从集合中移除了一个元素:\(removeSetValue)")
}else{
    print("要移除的元素不在集合中")
}

if favoriteSet2.contains("玫瑰") {
    print("你好,玫瑰")
}else{
    print("竟然不在这里")
}

for item in favoriteSet2 {
    print("遍历集合的值:\(item)")
}

for item in favoriteSet2.sorted(){//Set是没有顺序的,但是遍历时用sorted可以吧元素按“<”的顺序遍历
    print("按特定顺序来遍历集合:\(item)")
}

//3.集合操作:合并、共有元素、非共有元素、非重复元素
let aSet: Set = [1,3,5,7,9]
let bSet: Set = [0,2,4,6,8]
let cSet: Set = [2,3,5,7]

let hSet = aSet.union(bSet).sorted() //把a集合和b集合按照升序合并成一个新的集合
print("集合的合并1:\(hSet)")
let hSet2 = aSet.union(cSet).sorted()//a集合和c集合合并
print("集合的合并2:不会保留重复元素:\(hSet2)")

let gSet = aSet.intersection(cSet).sorted()//取出a集合和c集合中的共有部分
print("获取两个集合的共有部分:\(gSet)")

let bgSet = aSet.symmetricDifference(cSet).sorted()//取出a集合和c集合中非共有部分
print("获取两个集合中非共有的部分:\(bgSet)")

let bzSet = bSet.subtracting(cSet).sorted()//取出b集合中不在c集合中的元素
print("取出b集合不在c集合中的元素:\(bzSet)")

//全包含、部分包含、不相交
let set_a: Set = [1,2,3,4,5,6]
let set_b: Set = [3,5]
let set_c: Set = [7,8,9]
let isA = set_a.isSuperset(of: set_b)//返回 set_a 是否包含 set_b
let isB = set_b.isSubset(of: set_a)//返回 set_b 是否被 set_a 包含
let isC = set_a.isDisjoint(with: set_c)//返回 set_a 是否跟 set_c 没有交集
let isEq = set_a == set_b
print(isA,isB,isC,isEq)



你可能感兴趣的:(04.Swift集合)