- 首先,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)算