NSSet類型 以及與NSArray區別

 NSSet到底什麼類型,其實它和NSArray功能性質一樣,用於存儲對象,屬於集合; NSSet  , NSMutableSet類聲明編程接口對象,無序的集合,在內存中存儲方式是不連續的,不像NSArray,NSDictionary(都是有序的集合)類聲明編程接口對象是有序集合,在內存中存儲位置是連續的;另外NSSet中存儲的數據是唯一的,NSArray不是。


        NSSet和我們常用NSArry區別是:在搜索一個一個元素時NSSet比NSArray效率高,主要是它用到了一個算法hash(散列,也可直譯爲哈希);開發文檔中這樣解釋:You can use sets as an alternative to arrays when the order of elements isn’t important and performance in testing whether an object is contained in the set is a consideration—while arrays are ordered, testing for membership is slower than with sets.

比如你要存儲元素A,一個hash算法直接就能直接找到A應該存儲的位置;同樣,當你要訪問A時,一個hash過程就能找到A存儲的位置。而對於NSArray,若想知道A到底在不在數組中,則需要便利整個數組,顯然效率較低了;


       NSSet,NSArray都是類,只能添加cocoa對象,如果需要加入基本數據類型(int,float,BOOL,double等),需要將數據封裝成NSNumber類型


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章