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"


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值