数组
可变数组
不可变数组
集合
集合中不能存在重复的对象,利用此特性可以过滤重复对象
集合和数组有相似之处,都是存储不同的对象的地址;不过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];
可变字典
不可变字典