歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Objective-C語法之NSSet和NSMutableSet

NSSet和NSMutableSet是無序的, 但是它保證數據的唯一性。當插入相同的數據時,不會有任何效果。從內部實現來說是hash表,所以可以常數時間內查找一個數據。

1、NSSet的使用
[NSSet setWithSet:(NSSet *)set]; 用另外一個set對象構造
[NSSet setWithArray:(NSArray *)array];用數組構造
[NSSet setWithObjects:...]:創建集合對象,並且初始化集合中的數值,結尾必需使用nil標志。
[set count] ; 得到這個結合對象的長度。
[set containsObject:...]: 判斷這個集合中是否存在傳入的對象,返回Bool值。
[set objectEnumerator]: 將集合放入迭代器。
[enumerator nextObject]:得到迭代器中的下一個節點數據,使用while遍歷這個迭代器,方可遍歷集合對象中的對象。
[set isEqualToSet:objset]:判斷兩個集合是否完全相等,返回Bool值。
[set isSubsetOfSet:objset]:判斷集合中的所有數據是否都相等與objeset集合中,返回Bool值。
[set allObjects];

示例代碼:

1.1 以NSArray構造set

  1. NSArray *array = [[NSArray alloc] initWithObjects:@"對象abc",@"rongfzh", @"totogo2010",nil];  
  2.        NSSet *set3 = [NSSet setWithArray:array];  
  3.        NSLog(@"%@", set3);  

打印:

2012-07-10 09:39:02.015 objectiveC[720:403] {(
    rongfzh,
    "\U5bf9\U8c61abc",
    totogo2010
)}

1.2 set的一些比較方法的使用。

  1. int main(int argc, const char * argv[])  
  2. {  
  3.     @autoreleasepool {  
  4.         NSSet *set = [NSSet setWithObjects:@"25",@"age",@"張三",@"name",@"男",nil];  
  5.         NSSet *set1 = [NSSet setWithObjects:@"25",@"age",@"張三",@"name",@"男",@"性別",nil];  
  6.           
  7.         NSLog(@"set count:%lu", [set count]);  
  8.         //判斷是否含有age字符串   
  9.         if([set containsObject:@"age"]) {  
  10.             NSLog(@"set包含age");  
  11.         }  
  12.         //判斷set 是否等於set1   
  13.         if ([set isEqualToSet:set1]) {  
  14.             NSLog(@"set 等於 set1");  
  15.         }  
  16.         //判斷set是否是否是set1的子集合   
  17.         if ([set isSubsetOfSet:set1]) {  
  18.             NSLog(@"set isSubsetOfSet set1");  
  19.         }  
  20.         //獲取所有set對象   
  21.         NSArray *array = [set allObjects];  
  22.         NSLog(@"array:%@", array);  
  23.           
  24.         //迭代遍歷   
  25.         NSEnumerator *enumerator = [set objectEnumerator];  
  26.         for (NSObject *object in enumerator) {  
  27.             NSLog(@"set1裡的對象:%@", object);  
  28.         }  
  29.     }  
  30.     return 0;  
  31. }  

打印結果:

2012-07-10 09:50:32.018 objectiveC[939:403] set count:5
2012-07-10 09:50:32.020 objectiveC[939:403] set包含age
2012-07-10 09:50:32.021 objectiveC[939:403] set isSubsetOfSet set1
2012-07-10 09:50:32.023 objectiveC[939:403] array:(
    age,
    25,
    "\U7537",
    "\U5f20\U4e09",
    name
)
2012-07-10 09:50:32.027 objectiveC[939:403] set1裡的對象:age
2012-07-10 09:50:32.028 objectiveC[939:403] set1裡的對象:25
2012-07-10 09:50:32.028 objectiveC[939:403] set1裡的對象:男
2012-07-10 09:50:32.029 objectiveC[939:403] set1裡的對象:張三
2012-07-10 09:50:32.029 objectiveC[939:403] set1裡的對象:name

Copyright © Linux教程網 All Rights Reserved