OC中的集合NSSet
1 集合NSSet(无序) 2 本质上是哈希表,采用散列算法来查找 3 每个元素只有一次,元素是无序的 4 5 创建 每个元素可以是任意的对象 6 NSSet *set=[[NSSet alloc] initWithObjects:@"one",@"two", 7 @"three",@"four",nil]; 8 NSSet *set2=[[NSSet alloc] initWithObjects:@"one",@"two", 9 @"three",@"four",@"five",nil]; 10 打印 11 NSLog(@"%@",set);结果one three four two可见是无序的 12 获得集合中的元素的个数 13 NSLog(@"%@lu",[set count]); 14 判断集合中是否拥有某个元素 15 BOOL ret=[set containsObject:@"two"]; 16 17 判断两个集合是否相等 18 BOOL ret=[set isEqualToSet:set2]; 19 判断第一个集合是否是第二个集合的子集合 20 BOOL ret=[set isSubsetOfSet:set2]; 21 22 也可以通过枚举器法遍历 23 NSEnumerator *enumrator=[set objectEnumrator]; 24 枚举器可以遍历数组、字典、和集合; 25 NSString *str; 26 27 while(str=[enumrator nextObject]){ 28 NSLog(@"%@",str); 29 } 30 31 集合还可以利用从数组中提取元素来创建 32 NSArray *array=[[NSArray alloc] initWithObjects:@"one",@"two",nil]; 33 NSSet *set=[[NSSet alloc] initWithObjects:array]; 34 集合也可以把自己的元素取出来生成数组对象 35 NSArray *array2=[set allObjects]; 36 NSLog(@"%@",array2); 37 38 [array release]; 39 [set release]; 40 41 42 NSMutableSet *set=[NSMutableSet alloc] init]; 43 动态添加,如果添加的有重复,只保留一个 44 [set addObject:@"one"]; 45 [set addObject:@"two"]; 46 [set addObject:@"one"]; 47 48 删除 49 [set removeObject:@"two"]; 50 51 添加集合 52 NSSet *set2=[[NSSet alloc] initWithObjects:@"five",@"four",nil]; 53 [set unionSet:set2];set2中的内容全部添加到set中,重复的只保留一个 54 55 [set minusSet:set2];将set2中的内容删除 56 57 NSIndexSet指数集合(索引集合) 58 装的都是数字 59 NSIndexSet *indexSet=[NSIndexSet alloc] initWithIndexesInRange: 60 NSMakeRange(2,3)];从2开始3个数字,所以集合中数字是2,3,4 61 62 提取数组中的元素 63 NSArray *array=[[NSArray alloc] initWithObjects:@"one",@"two",@"three",@"four",@"five",@"six",nil]; 64 NSArray *newArray=[array objectsAtIndexes:indexSet]; 65 NSLog(@"%@",newArray);结果是 three,four,five 66 67 68 NSMutableIndexSet *indexSet=[[NSMutableIndexSet alloc]init]; 69 [indexSet addIndex:0]; 70 [indexSet addIndex:3]; 71 [indexSet addIndex:5]; 72 NSArray *array=[[NSArray alloc] initWithObjects:@"one",@"two",@"three",@"four",@"five",@"six",nil]; 73 NSArray *newArray=[array objectsAtIndexes:indexSet]; 74 NSLog(@"%@",newArray);结果是 one,four,six