使用一組數組,而不是當你需要有效地測試成員和你不關心元素的集合,或在訂單時,你需要確保每個元素在集合中只出現一次。
基本上Set
確保唯一,它有一些方法和依賴於Hashable
使用含有(_ :)方法來測試一組是否包含特定元素。
使用減法(_ :)方法來創建一個新的集合與不是也在另一組或序列的集合中的元素
但2個不同的對象可以有相同的hashValue
,像這篇文章Swift Hashable
不要假定具有相同散列值的類型的兩個實例是相等的。根據我們計算散列值的方式,我們可以得到兩個不同實例共享相同散列值的衝突。 Hashable協議只需要反向 - 兩個相等的實例具有相同的散列值。
那麼,如果兩個對象具有相同的hashValue
,並Set
不僅節省了1,那麼我們有什麼問題?
該文檔沒有聲明只保存具有不同hashValue的項目。 –
「那麼如果2個對象具有相同的散列值,而Set僅保存1,那麼我們有問題?」 編號設置將存儲2個對象。這種情況稱爲散列衝突,Set將處理該情況。 –