iOS数组、集合、字典

数组

  • 可变数组

  • 不可变数组

集合

集合中不能存在重复的对象,利用此特性可以过滤重复对象
集合和数组有相似之处,都是存储不同的对象的地址;不过NSArray是有序的集合,NSSet是无序的集合。
集合是一种哈希表,运用散列算法,查找集合中的元素比数组速度更快,但是它没有顺序

*可变集合

  • 不可变集合

NSSet * set = [[NSSet alloc] initWithObjects:@"one",@"two",@"three", nil];
NSMutableSet *set1 = [[NSMutableSet alloc] initWithObjects:@"1",@"2",@"3", nil nil];
NSMutableSet *set2 = [[NSMutableSet alloc] initWithObjects:@"1",@"5",@"6", nil nil];
// 对象个数
[set count];
// 判断是否拥有某对象
BOOL ret0 = [set containsObject:@"two"];
// 取并集1,2,3,5,6
[set1 unionSet:set2];
// 取交集1
[set1 intersectSet:set2];
// 删除set1中与set2相同的元素 结果:2, 3
[set1 minusSet:set2];
// 判断两个集合是否相等
BOOL ret1 = [set1 isEqualToSet:set2];
BOOL ret2 = [set isSubsetOfSet:set2];
// 通过数组初始化集合
NSSet *set3 = [[NSSet alloc] initWithArray:array];
// 集合转变为数组
NSArray *array2 = [set allObjects];

// 可变集合NSMutableSet
NSMutableSet * set4 = [[NSMutableSet alloc] init];
[set4 addObject:@"one"];
[set4 addObject:@"two"];
//如果添加的元素有重复,实际只保留一个
[set4 addObject:@"two"];
//删除元素
[set4 removeObject:@"two"];
[set4 removeAllObjects];
// 将set2中的元素添加到set中来,如果有重复,只保留一个
[set unionSet:set2];

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

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

  • 可变字典

  • 不可变字典

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容