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基本使用的更多相关文章

  1. iOS笔记之NSSet

     一.简介 NSSet到底什么类型,其实它和NSArray功能性质一样,用于存储对象,属于集合: NSSet  , NSMutableSet类声明编程接口对象,无序的集合,在内存中存储方式是不连续的, ...

  2. Fouandation(NSString ,NSArray,NSDictionary,NSSet) 中常见的理解错误区

    Fouandation 中常见的理解错误区 1.NSString //快速创建(实例和类方法) 存放的地址是 常量区 NSString * string1 = [NSString alloc]init ...

  3. 一些NSArray,NSDictionary,NSSet相关的算法知识

    iOS编程当中的几个集合类:NSArray,NSDictionary,NSSet以及对应的Mutable版本,应该所有人都用过.只是简单使用的话,相信没人会用错,但要做到高效(时间复杂度)精确(业务准 ...

  4. NSSet

    版权声明:本文为博主原创文章,未经博主允许不得转载. 一.NSSet的创建和初始化 创建一个空的NSSet集合:+ (void)set; 用数组来创建NSSet集合:+ (id)setWithArra ...

  5. Foundation ----->NSSet

    1.集合类     NSString *s1 = @"zhangsan";     NSString *s2 = @"lisi";     NSString * ...

  6. 遍历NSArray, NSDictionary, NSSet的方法总结

    1,for循环读取 NSArray: NSArray *array = /*…*/ ; i<array.count; i++) { id object = array[i]; // do sth ...

  7. OC NSSet

    OC NSSet 数组的特点: 有序的 Set的特点: 无序的,存储元素无重复(例:set中有两个元素'a' 输出时只输出一个a) NSSet初始化 NSSet * set = [[NSSet all ...

  8. Objective-C基础数据类型-NSSet[转]

    转自GISerYang 集合: 集合(NSSet)和数组(NSArray)有相似之处,都是存储不同的对象的地址:不过NSArray是有序的集合,NSSet是无序的集合. 集合是一种哈希表,运用散列算法 ...

  9. 黑马程序员——OC语言Foundation框架 (2) NSArray NSSet NSDictionary\NSMutableDictionary

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)NSArray 1>NSArray :不可变数组 ①创建方法 ...

  10. IOS集合NSSet与NSMutableSet知识点

    NSSet在实际应用中与NSArray区别不大,但是如果你希望查找NSArray中的某一个元素,则需要遍历整个数组,效率低下.而NSSet在查找某一特定的元素的时候则是根据hash算法直接找到此元素的 ...

随机推荐

  1. C#数组的笔记

    Array.Copy的笔记: 1.将值类型的元素装箱位引用类型的元素,比如讲一个Int32[]的元素复制到Object[]中 2.将引用类型的元素拆箱为值类型的元素 3.加宽CLR基元值类型,比如讲一 ...

  2. vue指令详解

    一.vue简绍 1. Vue.js是什么    Vue.js也称为Vue,读音/vju:/,类似view,错误读音v-u-e. 版本分为v1.0 和 v2.0 2.Vue.js的特点 1. 是一个构建 ...

  3. Linux基础——系统监控

    系统监视和进程控制工具——top(任务管理器) top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. 各行数据大致解释如下: 12: ...

  4. js 数组判断是否包含某元素 或 数组去重

    判断包含: 1.借助 jquery  $.inArray(obj.UNIVERSITY_NAME, arryDatas) < 0var arr = [ "xml", &quo ...

  5. selenium破解数字验证码

    搞了半天,总算弄出来了,识别率还可以,普通的数字验证码 from selenium import webdriver from PIL import Image import pytesseract ...

  6. PAT 天梯赛 L1-021. 重要的话说三遍 【水】

    题目链接 https://www.patest.cn/contests/gplt/L1-021 AC代码 #include <iostream> #include <cstdio&g ...

  7. HDU - 4407 Sum (容斥)

    题意:初始序列[1..N](1<=N<=4e5),支持两种操作:1.求区间[x,y]内与p互素的数之和: 2.将x位置的数变为c. 分析:很容易把人骗到线段树的思维中,而实际上操作2单点的 ...

  8. HDU - 6406 Taotao Picks Apples (RMQ+dp+二分)

    题意:N个高度为hi的果子,摘果子的个数是从位置1开始从左到右的严格递增子序列的个数.有M次操作,每次操作对初始序列修改位置p的果子高度为q.每次操作后输出修改后能摘到得数目. 分析:将序列分为左.右 ...

  9. 开发者需要知道的iOS 12

    总体概况 iOS 12总体来看是对现有iOS的一次改进,并没有太多突破性的功能或者框架,但是Apple在底层做了很多优化的工作,优化了性能,提供了更强大的安全性,增强了AR.Siri体验,让人工智能更 ...

  10. filter方法解析

    filter一般用于将数组中的某些元素过滤掉,并生成一个新的数组 基本语法如下: var newArray= arrayObj.filter(functionObj); newArray 根据过滤条件 ...