博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NSSet以及NSMutableSet用法
阅读量:4963 次
发布时间:2019-06-12

本文共 4174 字,大约阅读时间需要 13 分钟。

        刚刚学习了Funcdation框架中的NSSet,跟大家分享一下。

  1、集合:集合(NSSet)和数组(NSArray)有相似之处,都是存储不同的对象的地址;不过NSArray是有序的集合,NSSet是无序的集合。

      集合是一种哈希表,运用散列算法,查找集合中的元素比数组速度更快,但是它没有顺序。
  2、存储的所有对象只能有唯一一个,不能重复。

 

1 /****************    Immutable Set    ****************/  2     NSSet * set = [[NSSet alloc] initWithObjects:@"one",@"two",@"three",@"four", @"a", @"b", @"c", @"d",nil];  3     //直接类名调用,不用alloc。+号方法加号方法使用一组对象创建新的集合  4     NSSet *set1 = [NSSet setWithObjects:@"a", @"b", @"c", @"d", nil];  5     //—号方法  6     NSSet *set2 = [[NSSet alloc] initWithObjects:@"1", @"2", @"3", nil];  7       8     //把数组转化成集合  9     NSArray *array = [NSArray arrayWithObjects:@"a", @"b", @"c",@"d", nil]; 10     NSSet *set3    = [NSSet setWithArray:array]; 11     //打印集合中的所有元素 12     NSLog(@"set:%@",set); 13     NSLog(@"set1 :%@", set1); 14     NSLog(@"set2 :%@", set2); 15     NSLog(@"set3 :%@", set3); 16     //获取集合个数 17     NSLog(@"set count :%lu", set1.count); 18     NSLog(@"set count :%lu", [set1 count]); 19      20     //以数组的形式获取集合中的所有对象 21     NSArray *allObj = [set3 allObjects]; 22     NSLog(@"allObj :%@", allObj); 23      24     //是否包含某个对象 25     NSLog(@"Is set3 coatains a ?   %d", [set3 containsObject:@"a"]); 26      27     //是否包含指定set中的对象 28     NSLog(@"Is set1 contains set3's obj ?   %d", [set1 intersectsSet:set3]); 29      30     //是否完全匹配 31     NSLog(@"set1 isEqualto set3 :%d", [set1 isEqualToSet:set3]); 32     NSLog(@"set2 isEqualto set3 :%d", [set2 isEqualToSet:set3]); 33      34     //是否是子集合 35     NSLog(@"set3 isSubSet of set1:%d", [set3 isSubsetOfSet:set1]); 36     NSLog(@"set3 isSubSet of set :%d", [set3 isSubsetOfSet:set ]); 37      38     //set 加一个 arrar 类型的对象 39     NSSet *set4 = [NSSet setWithObjects:@"a", @"b", nil]; 40     NSArray *ary = [NSArray arrayWithObjects:@"1", @"2", @"3", @"4", nil]; 41     NSSet *set5 = [set4 setByAddingObjectsFromArray:ary]; 42     NSLog(@"addFromArray :%@", set5); 43      44     //set 加一个 id 类型的对象 45     NSSet *set6 = [set5 setByAddingObject:@"c"]; 46     NSLog(@"set6 is :%@",set6); 47      48     //set 加一个 set 类型的对象 49     NSSet *set7 = [set1 setByAddingObjectsFromSet:set2]; 50     NSLog(@"set7 is :%@",set7); 51      52 /****************    Mutable Set    ****************/     53      54     //初始化 55      56     NSMutableSet *mutableSet = [[NSMutableSet alloc] init]; 57     [mutableSet addObject:@"1"]; 58      59     NSLog(@"mutableSet1 is :%@",mutableSet); 60     //加号方法使用一组对象创建新的集合 61     NSMutableSet *mutableSet1 = [NSMutableSet setWithObjects:@"1", @"2", @"3", nil]; 62     NSLog(@"mutableSet1 is %@",mutableSet1); 63     //初始化一个新分配的集合,大小为size 64     NSMutableSet *mutableSet2 = [[NSMutableSet alloc] initWithCapacity:3]; 65     [mutableSet2 addObject:@"1"]; 66     [mutableSet2 addObject:@"b"]; 67     [mutableSet2 addObject:@"3"]; 68     //创建一个有size大小的新集合 69     NSMutableSet *mutableSet3 = [NSMutableSet setWithCapacity:3]; 70     [mutableSet3 addObject:@"a"]; 71     [mutableSet3 addObject:@"2"]; 72     [mutableSet3 addObject:@"c"]; 73      74     //集合元素相减 75     [mutableSet1 minusSet:mutableSet2]; 76     NSLog(@"minus :%@", mutableSet1); 77      78     //只留下相等元素, 做交集运算 79     [mutableSet2 intersectSet:mutableSet3]; 80     NSLog(@"intersect :%@", mutableSet2); 81      82     //合并集合 将两个集合中所有元素添加到调用者 83     [mutableSet2 unionSet:mutableSet3]; 84     NSLog(@"union :%@", mutableSet2); 85      86     //删除指定元素 87     [mutableSet2 removeObject:@"a"]; 88     NSLog(@"removeObj :%@", mutableSet2); 89      90     //删除所有数据 91     [mutableSet2 removeAllObjects]; 92     NSLog(@"removeAll :%@", mutableSet2); 93      94     //清空接收,把自己清空然后接受另一个set传过来的所有对象 95     NSMutableSet *mutableSet4 = [NSMutableSet setWithObjects:@"a",@"b",@"c" ,nil]; 96     [mutableSet4 setSet:set2]; 97     NSLog(@"removeAll :%@", mutableSet4); 98      99     /****************    Counted Set    ****************/100     101     //NSCountedSet类声明一个可变的编程接口,无序模糊对象的集合。一组数也称为一个袋子。概述每个不同的对象插入一个NSCountedSet对象有一个与之关联的计数器。102     103     104     NSCountedSet *countedSet = [[NSCountedSet alloc] initWithObjects:@"1",@"2",@"3",@"2",@"1", nil];105     106     NSLog(@"countedSet is :%@",countedSet);

 

转载于:https://www.cnblogs.com/TianHero/p/5101502.html

你可能感兴趣的文章
C# 通知机制 IObserver<T> 和 IObservable<T>
查看>>
Code of Conduct by jsFoundation
查看>>
C#小练习ⅲ
查看>>
电源防反接保护电路
查看>>
arraylist
查看>>
zoj 1649 Rescue (BFS)(转载)
查看>>
2124: 等差子序列 - BZOJ
查看>>
字符串匹配算法综述
查看>>
Linux centosVMware shell 管道符和作业控制、shell变量、环境变量配置文件
查看>>
【设计模式】工厂模式
查看>>
两个表格中数据不用是一一对应关系--来筛选不同数据,或者相同数据
查看>>
客户数据库出现大量cache buffer chains latch
查看>>
機械の総合病院 [MISSION LEVEL: C]
查看>>
实战练习细节(分行/拼接字符串/字符串转int/weak和copy)
查看>>
Strict Standards: Only variables should be passed by reference
查看>>
hiho_offer收割18_题解报告_差第四题
查看>>
AngularJs表单验证
查看>>
静态方法是否属于线程安全
查看>>
02号团队-团队任务3:每日立会(2018-12-05)
查看>>
SQLite移植手记1
查看>>