NSSet基本使用

  1 int main(int argc, const char * argv[]) {
  2     @autoreleasepool {
  3 
  4         //创建一个集合对象  注:如果集合中写了两次或多次同一个对象 打印只能看到一个
  5         NSSet *set1 = [[NSSet alloc] initWithObjects:@"one",@"two",@"three",@"three", nil];
  6         //注:集合里面最外层先是大括号 然后小括号
  7         //集合是无序 它是哈希散列排序  《数据结构》哈希算法
  8         NSLog(@"%@",set1);
  9         
 10         //集合中元素的个数
 11         NSLog(@"集合的个数:%ld",[set1 count]);
 12         
 13         
 14         //是否包含某个元素
 15         BOOL contains = [set1 containsObject:@"two"];
 16         NSLog(@"是否包含:%d",contains);
 17         
 18         //两个集合是否相等
 19         NSSet *set2 = [NSSet setWithObjects:@"one",@"two",@"three",@"four", nil];
 20         BOOL isEqual = [set1 isEqualToSet:set2];
 21 
 22         if (isEqual) {
 23             NSLog(@"两个集合相等");
 24         }else {
 25             NSLog(@"两个集合不相等");
 26         }
 27         
 28     
 29         //判断第一个集合是否是第二个集合的子集合
 30 
 31         BOOL isSubset = [set1 isSubsetOfSet:set2];
 32         NSLog(@"是否是子集合:%d",isSubset);
 33         
 34         
 35         //枚举遍历   for   while   do-while  forin   枚举器
 36         //取set2的集合枚举器 经常用枚举器遍历集合
 37         NSEnumerator *enumerator = [set2 objectEnumerator];
 38         NSString *str;
 39         //nextObject 下一个元素
 40         while (str = [enumerator nextObject]) {
 41             NSLog(@"%@",str);
 42         }
 43         
 44         //通过数组的方式去创建集合  (数组转成集合)
 45         NSSet *set3 = [NSSet setWithArray:@[@"one",@"five"]];
 46         NSLog(@"set3:%@",set3);
 47         //查看集合所有元素 返回一个数组 (集合转成数组)
 48         NSArray *array1 = [set3 allObjects];
 49         NSLog(@"array1:%@",array1);
 50         
 51         
 52         /********可变集合*******/
 53         //创建空的集合
 54         NSMutableSet *mSet = [[NSMutableSet alloc] init];
 55         NSLog(@"%@",mSet);
 56         
 57         // 58         //增加集合元素
 59         [mSet addObject:@"one"];
 60         [mSet addObject:@"one"];
 61         [mSet addObject:@"two"];
 62         [mSet addObject:@"three"];
 63         NSLog(@"%@",mSet);
 64         
 65         // 66         //删除集合元素
 67         [mSet removeObject:@"one"];
 68         NSLog(@"%@",mSet);
 69         
 70         
 71         //集合中添加集合
 72         [mSet unionSet:set2];
 73         NSLog(@"------%@",mSet);
 74         
 75         //集合中删除集合  删除的时候 如果要删除集合里面有多的集合元素,mSet没有此集合元素 删除的时候不会崩溃
 76 //        NSSet *_set = [NSSet setWithObjects:@"one",@"two",@"three",@"four",@"1", nil];
 77 
 78 //        [mSet minusSet:_set];
 79 //        NSLog(@"======%@",mSet);
 80         
 81         /********指数集合或索引集合**********/
 82         //继承NSObject
 83         //创建一个索引集合  通过在指定范围创建索引集合 注:range千万别超范围会崩溃
 84 //        NSIndexSet *set4 = [[NSIndexSet alloc] initWithIndexesInRange:NSMakeRange(2, 4)];
 85         
 86         //创建一个空的可变的索引集合
 87         NSMutableIndexSet *set5 = [[NSMutableIndexSet alloc] init];
 88         //给可变索引集合添加下标
 89         [set5 addIndex:0];
 90         [set5 addIndex:2];
 91         [set5 addIndex:3];
 92         [set5 addIndex:6];
 93         
 94         
 95         NSArray *allArray = [[NSArray alloc] initWithObjects:@"one",@"two",@"three",@"four",@"five",@"six",@"seven", nil];
 96         //通过索引集合得到数组(索引range范围内的数组元素)
 97         NSArray *subArray = [allArray objectsAtIndexes:set5];
 98         NSLog(@"++++++++%@",subArray);
 99         
100     
101     }
102     return 0;
103 }
原文地址:https://www.cnblogs.com/GJ-ios/p/5483480.html