我在读集
当您需要有效地测试成员资格并且您不关心集合中元素的顺序,或者当您需要确保每个元素在集合中只出现一次时,您可以使用集合而不是数组。
基本Set
保证唯一性,有一些方法,依赖Hashable
使用 contains(_:) 方法测试集合是否包含特定元素。
使用减法(_:) 方法创建一个新集合,其中包含一个集合中不在另一个集合或序列中的元素
但是 2 个不同的对象可以有相同的hashValue
,就像这篇文章Swift Hashable
不要假设具有相同哈希值的类型的两个实例是相等的。根据我们计算哈希值的方式,我们可能会遇到两个不同实例共享相同哈希值的冲突。Hashable 协议只需要反过来——两个相等的实例具有相同的哈希值。
那么如果 2 个对象具有相同的hashValue
,并且Set
只保存 1 个,那么我们有问题吗?