NSSet 总结 - iOS

一.简介

NSSet 集合和数组(NSArray)相似,都是存储不同对象的地址;

不过 NSArray 是有序的集合,而 NSSet 是无序的集合;

其中,集合是一种哈希表,运用散列算法查找集合中的元素;

效率相对比起数组速率更快,但它没有顺序.

NSSet *set = [[NSSet alloc] initWithObjects:@"one",@"two",@"three",@"four", nil];

[set count];//返回集合中对象的个数

NSMutableSet *mSet = [NSMutableSet setWithCapacity:0];

注:若在设置时放入两个相同的元素,系统会自动删掉一个元素.


二.常用方法

1.判断集合中是否拥有某个元素 Element

//判断集合中是否拥有@“two”

BOOL ret = [setcontainsObject:@"two"];

2.判断两个集合是否相等

NSSet * set2 = [[NSSet alloc] initWithObjects:@"one",@"two",@"three",@"four", nil];//判断两个集合是否相等BOOL ret = [setisEqualToSet:set2];

3.判断 set 是否是 set2 的子集

NSSet * set2 = [[NSSet alloc] initWithObjects:@"one",@"two",@"three",@"four",@"five", nil];//判断set是否是set2的子集合BOOL ret = [setisSubsetOfSet:set2];

4.集合也可以用枚举器来遍历

//集合也可以用枚举器来遍历NSEnumerator * enumerator = [setobjectEnumerator];NSString *str;while(str =[enumerator nextObject]) {……}

5.通过数组来初始化集合(数组转为集合)

NSArray * array = [[NSArray alloc] initWithObjects:@"one",@"two",@"three",@"four", nil];NSSet *set= [[NSSet alloc] initWithArray:array];

6.集合转换为数组

NSArray * array2 = [setallObjects];

7.可变集合 NSMutableSet

//可变集合NSMutableSetNSMutableSet *set=[[NSMutableSet alloc] init];[setaddObject:@"one"];[setaddObject:@"two"];[setaddObject:@"two"];//如果添加的元素有重复,实际只保留一个

8.删除元素

//删除元素[setremoveObject:@"two"];[setremoveAllObjects];

9.将 set2 中的元素添加到 set 中来,若重复则保留一个

//将set2中的元素添加到set中来,如果有重复,只保留一个NSSet * set2 = [[NSSet alloc] initWithObjects:@"two",@"three",@"four", nil];[setunionSet:set2];

10.删除 set 中与 set2 相同的元素

[setminusSet:set2];

11.指数集合(索引集合)NSIndexSet

//指数集合(索引集合)NSIndexSetNSIndexSet * indexSet = [[NSIndexSet alloc] initWithIndexesInRange:NSMakeRange(1,3)];//集合中的数字是123

12.根据集合提取数组中指定位置的元素

//根据集合提取数组中指定位置的元素NSArray * array = [[NSArray alloc] initWithObjects:@"one",@"two",@"three",@"four", nil];NSArray * newArray = [array objectsAtIndexes:indexSet];//返回@"two",@"three",@"four"

13.可变指数集合 NSMutableIndexSet

NSMutableIndexSet *indexSet =[[NSMutableIndexSet alloc] init];[indexSet addIndex:0][indexSet addIndex:3];[indexSet addIndex:5];//通过集合获取数组中指定的元素NSArray *array = [[NSArray alloc] initWithObjects:@"one",@"two",@"three",@"four",@"five",@"six", nil];NSArray *newArray = [array objectsAtIndexes:indexSet];//返回@"one",@"four",@"six"

你可能感兴趣的:(NSSet 总结 - iOS)