NSArray和NSSet所實現的基本功能其實都差不多,這和其他語言如java有很大差別,NSArray的存儲數據的方式是連續的,後一個數據在內存中是緊接著前一個數據的,而NSSet在存儲的時候並不是需要一塊連續的內存,有可能我第一個數據在這個地方,而第二個數據和第一個數據中間還隔得有其他內容,我只是在存儲第二個數據的時候,隨便找了個可以放下的位置就存下來了
那麼他們這麼做的好處是什麼呢?
NSSet由於在底層使用hash的思想實現的,所以他就保證了裡面存儲的對象必須是唯一的,而數組可以存儲相同的幾個對象。
由於NSSet是用hash實現的所以就造就了它查詢速度比較快,但是我們不能把某某對象存在第幾個元素後面之類的有關腳標的操作。
而數組可以進行腳標的操作,但是查詢速度稍微要慢一些。
舉個例子說明NSSet的查詢速度為什麼比NSArray快。
當我們在查找某一個元素A的時候,在NSSet中我們直接可以通過hash值找到A的存儲的位置,而NSArray則需要遍歷A前面的所有的額元素後才能找到。