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. PyNest——part 3: connecting networks with synapses

    part 3: connecting networks with synapses parameterising synapse models NEST提供了各种不同的突触模型. 您可以使用命令nes ...

  2. IOS JAVA PHP 安卓 通用加密方式

    PHP代码: class Aes { private $hex_iv = '00000000000000000000000000000000'; // converted JAVA byte code ...

  3. Linux服务器内存cache清理

    发现cache中占用大量内存,无free内存可用 使用如下命令清理: syncsysctl -w vm.drop_caches=1 转自:http://blog.csdn.net/sky_qing/a ...

  4. flume hdfs配置详解

    flume采集中HDFS参数解析 就是个备忘录,方便以后直接查阅,不用再网上找了!!!! 配置解析 Flume中的HDFS Sink应该是非常常用的,其中的配置参数也比较多,在这里记录备忘一下. ch ...

  5. js防抖

    那我们设置个 options 作为第三个参数,然后根据传的值判断到底哪种效果,我们约定: leading:false 表示禁用第一次执行trailing: false 表示禁用停止触发的回调 我们来改 ...

  6. c刷新缓冲区

    int c; while((c = getchar()) != '\n' && c != EOF);

  7. setState详解

    我们都知道,React通过this.state来访问state,通过this.setState()方法来更新state.当this.setState()方法被调用的时候,React会重新调用rende ...

  8. JavaEE之Junit单元测试

    1编写测试类,简单理解Junit可以部分用于取代java的main方法 2在测试类方法上添加注解 @Test 3 @Test修饰的方法要求:public void 方法名() {…} ,方法名自定义建 ...

  9. 超详细 Linux 下编译安装Redis 以及php配套使用

    一.Linux 下安装Redis 下载地址:http://redis.io/download,下载最新文档版本. 把鼠标移到上图的绿色框上,就会显示下图提示:(直接右键复制链接就好) 本教程使用的旧版 ...

  10. Define class with itself as generic implementation. Why/how does this work?

    https://stackoverflow.com/questions/10709061/define-class-with-itself-as-generic-implementation-why- ...