整理NSSet集合

2021-06-28 21:11:08 字數 3417 閱讀 5908

(1) 初始化nsset集合

nsnumber *num=[nsnumber numberwithinteger:2345

];nsset *set=[nsset setwithobjects:@"

abc",@"

efg", num,nil];

因為nsset集合只能儲存物件型別,如果要儲存int,char,double 等基礎型別,必須將這些轉化為物件型別才能儲存到nsset集合中。第一行**將數字轉化為nsnumber數字物件。

使用setwithobjects 來初始化乙個nsset集合,同樣和nsarray一樣,需要使用nil來標識集合的結束。

(2) 使用count獲取nsset集合的長度

nsnumber *num=[nsnumber numberwithinteger:2345

]; nsset *set=[nsset setwithobjects:@"

abc",@"

efg"

, num,nil];

nslog(

@"%d

",[set count]);

上面的**輸出結果為3,說明集合set中包含三個元素,注意最後的nil不包含在其中。同時nsset可以同時儲存不同型別的物件,上面的**中就包含了nsstring和nsnumber兩種型別物件。

(3) 使用containobject判斷是否包含某個元素

nsnumber *num1=[nsnumber numberwithinteger:23

];bool flag=[set

containsobject:num1];

nslog(

@"%i

",flag);

這段**中重新宣告了乙個物件num1,containobject方法用於判斷nsset中是否包含特定的物件,返回值為bool。如果使用如上**則則返回為no,輸出為0

(4) 使用objectenumerator將集合轉化為迭代器

nsenumerator *enumr=[set

objectenumerator];

nsobject *item=[enumr nextobject];

while(item!=nil)

for(nsobject *obj in

set)

使用set呼叫objectenumerator方法只會,就將集合轉化為nsenumerator類,而nsenumerator類有乙個很重要的方法nextobject,用於獲取迭代器的下乙個元素。直到迭代到最後乙個元素。

(5) 元素的比較

//

比較兩個集合

nsset *setitems1=[nsset setwithobjects:@"

123", @"

234", @"

456"

,nil];

nsset *setitem2=[nsset setwithobjects:@"

123",@"

234"

, nil];

nsset *setitem3=[nsset setwithobjects:@"

123",@"

234", @"

456"

,nil];

bool flag1=[setitems1 isequaltoset:setitem2];

bool flag2=[setitems1 isequaltoset:setitem3];

nslog(

@"flag1=%i

",flag1);

nslog(

@"flag2=%i

",flag2);

bool flag3=[setitem2 issubsetofset:setitems1];

nslog(

@"flag3=%i

",flag3);

bool flag5=[setitems1 issubsetofset:setitem2];

nslog(

@"flag5=%i

",flag5);

bool flag4=[setitem2 intersectsset:setitem3];

nslog(

@"flag4=%i

",flag4);

使用方法isequaltoset用於判斷兩個集合元素是否一樣,返回bool值。

- (bool)issubsetofset:(nsset *)otherset; 判斷前者集合是不是後者的子集。在上面的例子中可以看到兩個集合呼叫的主從關係,這裡是有區別的。

- (bool)intersectsset:(nsset *)otherset;判斷兩個集合是否有交集,也就是兩個集合是否有相同的元素。

二. nsmutableset動態集合

nsmutableset和之前的nsmutablearray陣列一樣,是可以動態新增和刪除元素的。nsmutableset是nsset的乙個子類。

(1) setwithcapacity用於初始化nsmutableset的容量,這裡要注意容量並不等於儲存的元素數量

nsmutableset *muset=[nsmutableset setwithcapacity:10];
以上**就是初始化了乙個容量為10的nsmutableset集合,當往nsmutableset中新增新的元素物件時候,如果數量超過10不會陣列越界,因為nsmutableset是當儲存滿之後容量自動擴充。

(2) 往集合中新增物件元素

addobject 方法用於往nsmutableset集合中新增元素,每次只能新增乙個元素。

而addobjectsfromarray方法則用於將乙個陣列新增到nsmutableset集合中

(3) 刪除集合中的元素

[muset removeobject:[nsnumber numberwithint:2

]];

for(nsnumber *item in

muset)

[muset removeallobjects];

int leng=[muset count];

nslog(

@"00000-%d

",leng);

使用removeobject方法用於刪除nsmutableset集合中的元素,在以上**中刪除乙個值為2的nsnumber物件。

而使用removeallobjects方法則用於刪除nsnutableset中的所有的元素,最後一行**輸出的結果0。

(4)其他方法介紹

- (void)unionset:(nsset *)other;用於向集合中新增另外乙個集合的所有元素

- (void)minusset:(nsset *)other;用於刪除other中包含的元素

NSSet 集合物件

集合 nsset 物件是一組單值物件的組合,比如,1個包含1到50的數字的集合。集合物件的操作包括搜尋 新增 刪除集合中的成員 可變集合的功能 比較兩個集合,計算兩個集合的交集和並集等。nsset 常用方法總結 id setwithobjects obj1,obj2,nil 使用一組物件建立新的集合...

OC基礎資料型別 集合 NSSet

1 集合 集合 nsset 和陣列 nsarray 有相似之處,都是儲存不同的物件的位址 不過nsarray是有序的集合,nsset是無序的集合。集合是一種雜湊表,運用雜湊演算法,查詢集合中的元素比陣列速度更快,但是它沒有順序。1 nsset set nsset alloc initwithobje...

LinkedList集合整理

jdk1.6以後的新特性 addfirst offerfirst addlast offerlast getfirst peekfirst getlast peeklast removefirst pollfirst removelast polllast jdk1.6以後,刪除或獲取元素時,如果列...