NSSet基本使用
int main(int argc, const char * argv[]) {
@autoreleasepool {
//创建一个集合对象 注:如果集合中写了两次或多次同一个对象 打印只能看到一个
NSSet *set1 = [[NSSet alloc] initWithObjects:@"one",@"two",@"three",@"three", nil];
//注:集合里面最外层先是大括号 然后小括号
//集合是无序 它是哈希散列排序 《数据结构》哈希算法
NSLog(@"%@",set1);
//集合中元素的个数
NSLog(@"集合的个数:%ld",[set1 count]);
//是否包含某个元素
BOOL contains = [set1 containsObject:@"two"];
NSLog(@"是否包含:%d",contains);
//两个集合是否相等
NSSet *set2 = [NSSet setWithObjects:@"one",@"two",@"three",@"four", nil];
BOOL isEqual = [set1 isEqualToSet:set2];
if (isEqual) {
NSLog(@"两个集合相等");
}else {
NSLog(@"两个集合不相等");
}
//判断第一个集合是否是第二个集合的子集合
BOOL isSubset = [set1 isSubsetOfSet:set2];
NSLog(@"是否是子集合:%d",isSubset);
//枚举遍历 for while do-while forin 枚举器
//取set2的集合枚举器 经常用枚举器遍历集合
NSEnumerator *enumerator = [set2 objectEnumerator];
NSString *str;
//nextObject 下一个元素
while (str = [enumerator nextObject]) {
NSLog(@"%@",str);
}
//通过数组的方式去创建集合 (数组转成集合)
NSSet *set3 = [NSSet setWithArray:@[@"one",@"five"]];
NSLog(@"set3:%@",set3);
//查看集合所有元素 返回一个数组 (集合转成数组)
NSArray *array1 = [set3 allObjects];
NSLog(@"array1:%@",array1);
/********可变集合*******/
//创建空的集合
NSMutableSet *mSet = [[NSMutableSet alloc] init];
NSLog(@"%@",mSet);
//增
//增加集合元素
[mSet addObject:@"one"];
[mSet addObject:@"one"];
[mSet addObject:@"two"];
[mSet addObject:@"three"];
NSLog(@"%@",mSet);
//删
//删除集合元素
[mSet removeObject:@"one"];
NSLog(@"%@",mSet);
//集合中添加集合
[mSet unionSet:set2];
NSLog(@"------%@",mSet);
//集合中删除集合 删除的时候 如果要删除集合里面有多的集合元素,mSet没有此集合元素 删除的时候不会崩溃
// NSSet *_set = [NSSet setWithObjects:@"one",@"two",@"three",@"four",@"1", nil];
// [mSet minusSet:_set];
// NSLog(@"======%@",mSet);
/********指数集合或索引集合**********/
//继承NSObject
//创建一个索引集合 通过在指定范围创建索引集合 注:range千万别超范围会崩溃
// NSIndexSet *set4 = [[NSIndexSet alloc] initWithIndexesInRange:NSMakeRange(2, 4)];
//创建一个空的可变的索引集合
NSMutableIndexSet *set5 = [[NSMutableIndexSet alloc] init];
//给可变索引集合添加下标
[set5 addIndex:];
[set5 addIndex:];
[set5 addIndex:];
[set5 addIndex:];
NSArray *allArray = [[NSArray alloc] initWithObjects:@"one",@"two",@"three",@"four",@"five",@"six",@"seven", nil];
//通过索引集合得到数组(索引range范围内的数组元素)
NSArray *subArray = [allArray objectsAtIndexes:set5];
NSLog(@"++++++++%@",subArray);
}
return ;
}
NSSet基本使用的更多相关文章
- iOS笔记之NSSet
一.简介 NSSet到底什么类型,其实它和NSArray功能性质一样,用于存储对象,属于集合: NSSet , NSMutableSet类声明编程接口对象,无序的集合,在内存中存储方式是不连续的, ...
- Fouandation(NSString ,NSArray,NSDictionary,NSSet) 中常见的理解错误区
Fouandation 中常见的理解错误区 1.NSString //快速创建(实例和类方法) 存放的地址是 常量区 NSString * string1 = [NSString alloc]init ...
- 一些NSArray,NSDictionary,NSSet相关的算法知识
iOS编程当中的几个集合类:NSArray,NSDictionary,NSSet以及对应的Mutable版本,应该所有人都用过.只是简单使用的话,相信没人会用错,但要做到高效(时间复杂度)精确(业务准 ...
- NSSet
版权声明:本文为博主原创文章,未经博主允许不得转载. 一.NSSet的创建和初始化 创建一个空的NSSet集合:+ (void)set; 用数组来创建NSSet集合:+ (id)setWithArra ...
- Foundation ----->NSSet
1.集合类 NSString *s1 = @"zhangsan"; NSString *s2 = @"lisi"; NSString * ...
- 遍历NSArray, NSDictionary, NSSet的方法总结
1,for循环读取 NSArray: NSArray *array = /*…*/ ; i<array.count; i++) { id object = array[i]; // do sth ...
- OC NSSet
OC NSSet 数组的特点: 有序的 Set的特点: 无序的,存储元素无重复(例:set中有两个元素'a' 输出时只输出一个a) NSSet初始化 NSSet * set = [[NSSet all ...
- Objective-C基础数据类型-NSSet[转]
转自GISerYang 集合: 集合(NSSet)和数组(NSArray)有相似之处,都是存储不同的对象的地址:不过NSArray是有序的集合,NSSet是无序的集合. 集合是一种哈希表,运用散列算法 ...
- 黑马程序员——OC语言Foundation框架 (2) NSArray NSSet NSDictionary\NSMutableDictionary
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)NSArray 1>NSArray :不可变数组 ①创建方法 ...
- IOS集合NSSet与NSMutableSet知识点
NSSet在实际应用中与NSArray区别不大,但是如果你希望查找NSArray中的某一个元素,则需要遍历整个数组,效率低下.而NSSet在查找某一特定的元素的时候则是根据hash算法直接找到此元素的 ...
随机推荐
- Delphi 正则表达式语法(10): 选项
Delphi 正则表达式语法(10): 选项 // preCaseLess: 不区分大小写, 相当于其他语言中的 i var reg: TPerlRegEx; begin reg := TPe ...
- PHP preg_replace
preg_replace (PHP 3 >= 3.0.9, PHP 4, PHP 5) preg_replace -- 执行正则表达式的搜索和替换 说明 mixed preg_replace ( ...
- Mysql5.7 用户与授权
mysql -uroot -proot MySQL5.7 mysql.user表没有password字段改 authentication_string: 一. 创建用户: 命令:CREATE USER ...
- Linux curl命令参数详解(6/23)
linux curl是通过url语法在命令行下上传或下载文件的工具软件,它支持http,https,ftp,ftps,telnet等多种协议,常被用来抓取网页和监控Web服务器状态. 在Linux中c ...
- 20145219 《Java程序设计》第09周学习总结
20145219 <Java程序设计>第09周学习总结 教材学习内容总结 JDBC入门 JDBC简介 1.JDBC是java联机数据库的标准规范,它定义了一组标准类与接口,应用程序需要联机 ...
- hadoop中mapreduce的默认设置
MR任务默认配置: job.setMapperClass() Mapper Mapper将输入的<key,value>对原封不动地作为中间结果输出 job.setMapperOutputK ...
- [UOJ210]寻找罪犯
2-sat神题.. 告诉是2-sat我也完全想不到正解. 看了看题解其实一步步分析也不算很难 这个题首先是要围绕每个人是否是犯人和每句话是否是真话来思考 首先要明确的是: 1.好人不说谎话 2.说了谎 ...
- skynet之伪取消定时器
1.截至目前群里的成员已经对skynet中的timeout提出了更多的要求.目前skynet提供的定时器是倒计时形式,且定时器一旦设置后,便不能撤销(至少目前的实现是这样),然后调用 cb 最近有人提 ...
- javascript日期格式处理
一. 服务端返回的日期和时间之间有T Asp.net MVC中 action返回前台的日期类型数据 是带有 T的,如: 2015-07-07T10:15:01. 这样的数据在Chrome浏览器,会自动 ...
- rabbitmq High Availability
每个rabbitmq node运行RabbitMQ application,共享用户virtual hosts, queues, exchanges, etc. 一个nodes组称之为一个集群. 所有 ...