歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Objective-C語法之NSSet和NSMutableSet

Objective-C語法之NSSet和NSMutableSet

日期:2017/3/1 10:16:19   编辑:Linux編程

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. NSLog(@"set count:%lu", [set count]);
  7. //判斷是否含有age字符串
  8. if([set containsObject:@"age"]) {
  9. NSLog(@"set包含age");
  10. }
  11. //判斷set 是否等於set1
  12. if ([set isEqualToSet:set1]) {
  13. NSLog(@"set 等於 set1");
  14. }
  15. //判斷set是否是否是set1的子集合
  16. if ([set isSubsetOfSet:set1]) {
  17. NSLog(@"set isSubsetOfSet set1");
  18. }
  19. //獲取所有set對象
  20. NSArray *array = [set allObjects];
  21. NSLog(@"array:%@", array);
  22. //迭代遍歷
  23. NSEnumerator *enumerator = [set objectEnumerator];
  24. for (NSObject *object in enumerator) {
  25. NSLog(@"set1裡的對象:%@", object);
  26. }
  27. }
  28. return 0;
  29. }

打印結果:

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