NSArray和NSSet的區(qū)別

  • 首先,NSSet和NSArray功能性質(zhì)一樣,用于存儲(chǔ)對(duì)象,屬于集合。但是和NAArray不一樣的是它屬于 “無(wú)序集合”,在內(nèi)存中存儲(chǔ)方式是不連續(xù)的,而NSArray是 “有序集合” 它內(nèi)存中存儲(chǔ)位置是連續(xù)的。
  • 其次,NSSet的效率確實(shí)是比NSArray高的,因?yàn)樗饕玫氖莌ash算法,我的理解中,NSSet在集合中尋找一個(gè)元素的時(shí)候是一針見(jiàn)血,找到目標(biāo)順著就去了;而NSArray的話需要循環(huán)集合中所有的對(duì)象,來(lái)找到所需要的目標(biāo)。所以,循環(huán)所有對(duì)象與直接去對(duì)象的位置獲取,速度就顯而易見(jiàn)了。
  • 最后,你額外還需要主意兩點(diǎn)

1.NSSet,NSArray都是類,只能添加對(duì)象,如果需要加入基本數(shù)據(jù)類型(int,float,BOOL,double等),需要將數(shù)據(jù)封裝成NSNumber類型。

2.由于NSSet是用hash實(shí)現(xiàn)的所以就造就了它查詢速度比較快,但是我們不能把某某對(duì)象存在第幾個(gè)元素后面之類的有關(guān)下標(biāo)的操作。

hash:散列,也可直譯為“哈?!?,我不知道怎么說(shuō)他,有興趣可以百度百科一下

無(wú)序集合:集合里的元素只能遍歷

有序集合:集合里的元素可以根據(jù)key或index訪問(wèn)

NSSet 常用方法總結(jié)

+(id)setWithObjects:obj1,obj2,...nil    使用一組對(duì)象創(chuàng)建新的集合
-(id)initWithObjects:obj1,obj2,....nil  使用一組對(duì)象初始化新分配的集合
-(NSUInteger)count  返回集合成員個(gè)數(shù)
-(BOOL)containsObject:obj   確定集合是否包含對(duì)象 obj
-(BOOL)member:obj   確定集合是否包含對(duì)象 obj
-(NSEnumerator*)objectEnumerator    返回集合中所有對(duì)象到一個(gè) NSEnumerator 類型的對(duì)象
-(BOOL)isSubsetOfSet:nsset  判斷集合是否是NSSet的子集
-(BOOL)intersectsSet:nsset  判斷兩個(gè)集合的交集是否至少存在一個(gè)元素
-(BOOL)isEqualToSet:nsset   判斷兩個(gè)集合是否相等

NSMutableSet 常用方法總結(jié)

-(id)setWithCapcity:size    創(chuàng)建一個(gè)有size大小的新集合
-(id)initWithCapcity:size   初始化一個(gè)新分配的集合,大小為size
-(void)addObject:obj    添加對(duì)象 obj 到集合中
-(void)removeobject:obj 從集合中刪除對(duì)象 obj
-(void)removeAllObjects 刪除集合中所有對(duì)象
-(void)unionSet:nsset   將nsset的所有元素添加到集合
-(void)minusSet:nsset   從集合中去掉所有的NSSet 的元素
-(void)interectSet:nsset    集合和NSSet 做交集運(yùn)算
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容