(1) 初始化nsset集合
nsnumber *num=[nsnumber numberwithinteger:2345因為nsset集合只能儲存物件型別,如果要儲存int,char,double 等基礎型別,必須將這些轉化為物件型別才能儲存到nsset集合中。第一行**將數字轉化為nsnumber數字物件。];nsset *set=[nsset setwithobjects:@"
abc",@"
efg", num,nil];
使用setwithobjects 來初始化乙個nsset集合,同樣和nsarray一樣,需要使用nil來標識集合的結束。
(2) 使用count獲取nsset集合的長度
nsnumber *num=[nsnumber numberwithinteger:2345上面的**輸出結果為3,說明集合set中包含三個元素,注意最後的nil不包含在其中。同時nsset可以同時儲存不同型別的物件,上面的**中就包含了nsstring和nsnumber兩種型別物件。]; nsset *set=[nsset setwithobjects:@"
abc",@"
efg"
, num,nil];
nslog(
@"%d
",[set count]);
(3) 使用containobject判斷是否包含某個元素
nsnumber *num1=[nsnumber numberwithinteger:23這段**中重新宣告了乙個物件num1,containobject方法用於判斷nsset中是否包含特定的物件,返回值為bool。如果使用如上**則則返回為no,輸出為0];bool flag=[set
containsobject:num1];
nslog(
@"%i
",flag);
(4) 使用objectenumerator將集合轉化為迭代器
nsenumerator *enumr=[set使用set呼叫objectenumerator方法只會,就將集合轉化為nsenumerator類,而nsenumerator類有乙個很重要的方法nextobject,用於獲取迭代器的下乙個元素。直到迭代到最後乙個元素。objectenumerator];
nsobject *item=[enumr nextobject];
while(item!=nil)
for(nsobject *obj in
set)
(5) 元素的比較
//使用方法isequaltoset用於判斷兩個集合元素是否一樣,返回bool值。比較兩個集合
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);
- (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使用removeobject方法用於刪除nsmutableset集合中的元素,在以上**中刪除乙個值為2的nsnumber物件。]];
for(nsnumber *item in
muset)
[muset removeallobjects];
int leng=[muset count];
nslog(
@"00000-%d
",leng);
而使用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以後,刪除或獲取元素時,如果列...