我是否可以使用任何标准库调用来对两个数组执行集合操作,或者自己实现这种逻辑(在功能上和效率上都尽可能理想)?
是的,Swift Set上课了。
Set
let array1 = ["a", "b", "c"] let array2 = ["a", "b", "d"] let set1:Set<String> = Set(array1) let set2:Set<String> = Set(array2)
Swift 3.0+可以对集合执行以下操作:
firstSet.union(secondSet)// Union of two sets firstSet.intersection(secondSet)// Intersection of two sets firstSet.symmetricDifference(secondSet)// exclusiveOr
Swift 2.0可以计算数组参数:
set1.union(array2) // {"a", "b", "c", "d"} set1.intersect(array2) // {"a", "b"} set1.subtract(array2) // {"c"} set1.exclusiveOr(array2) // {"c", "d"}
Swift 1.2+可以在集合上进行计算:
set1.union(set2) // {"a", "b", "c", "d"} set1.intersect(set2) // {"a", "b"} set1.subtract(set2) // {"c"} set1.exclusiveOr(set2) // {"c", "d"}
如果使用自定义结构,则需要实现Hashable。
感谢Michael Stern在Swift 2.0更新的评论中。
感谢Amjad Husseini在Hashable信息的评论中。